¿Cómo escribo correctamente una declaración "o" en un bloque de ubicación de Nginx?

¿Cómo escribo correctamente una declaración "o" en un bloque de ubicación de Nginx?

Estoy usando Nginx en CentOS 7. Quiero agregar un encabezado de control de caché para archivos que terminan en una extensión particular o que contienen una cadena "/image/" en la URL. Probé esto

  location / {
    proxy_pass http://scale; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    if ($request_uri ~* ".(ico|gif|jpe?g|png)$") | ($request_uri ~* "/image/") {
      expires 60d;
      access_log off;
      add_header Pragma public;
      add_header Cache-Control "public";
      break;
    }
  }

pero al reiniciar el servidor, aparece un

invalid condition "$request_uri" in /etc/nginx/conf.d/scale.conf:16

error. Si elimino " | ($request_uri ~* "/image/")" de la línea problemática, todo se reinicia bien, pero luego no puedo hacer coincidir las cosas que quiero. ¿Cómo escribo una declaración adecuada o en mi archivo de configuración?

Respuesta1

En nginx,si es malo. Pero si realmente quieres hacerlo de esa manera, así es como lo harías:

if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {

Básicamente, simplemente combine las expresiones regulares.

información relacionada