Reglas de reescritura de Nginx: PHP multiubicación

Reglas de reescritura de Nginx: PHP multiubicación

¡Uno menos, uno más! Entiendo completamente todo lo que estaba mal con mi configuración anterior y me gustaría agradecer a Cemal en Stack Overflow una vez más. La /ubicación/ ahora muestra index.php.

El nuevo problema son las reglas de reescritura. Actualmente están configurados globalmente y cada ubicación debe hacer lo mismo (son interfaces PHP duplicadas, pero una tiene acceso limitado a ciertas cosas).

Por el momento, el dominio principal.com funciona, pero mydomain.com/test está cargando el PHP principal pero no pasa los datos de las reescrituras. Encontré una manera de hacerlo funcionar con archivos de prueba, pero tengo dificultades para que funcione siguiendo los consejos de expresiones regulares.encontrado aquí.

Tal como está sin intentarlo, lo siguiente genera errores al no poder encontrar raw_data o general_data en nginx a pesar de que estos archivos existen, por lo que solo puedo asumir que tienen que ser las reglas de reescritura.

Cloné las reglas de reescritura existentes y les puse el prefijo /test2/ pero aún no puedo ubicarlas.

27/02/2018 13:37:46 [error] 31485#31485: *49483 abierto()

"/var/www/html/test2/general_data" failed (2: No such file or
directory), client: X.X.X.X, server: mydomain.co.uk, request: "POST
/test/weather_data?cell HTTP/1.1", host: "mydomain.co.uk", referrer:
"https://mydomain.co.uk/test2/" 2018/02/27 13:37:46 [error]
31485#31485: *49546 open() "/var/www/html/test/raw_data" failed (2: No
such file or directory), client: X.X.X.X, server: my domain.co.uk,
request: "POST /test/raw_data HTTP/1.1", host: "mydomain.co.uk",
referrer: "https://mydomain.co.uk/test2/"

Ese es el error que me lleva a la conclusión de todos modos.

Aquí está mi configuración actual.las partes relevantes-

}server {

    rewrite ^/raw_data$ /raw_data.php?$1 last;
    rewrite ^/test_data$ /test_data.php?$1 last;
    rewrite ^/motd_data$ /motd_data.php?$1 last;
    rewrite ^/(.*)map.common.js$ /static/js/map.common.php last;
    rewrite ^/general_data$ /general_data.php?$1 last;

    rewrite ^test2/raw_data$ /test2/raw_data.php?$1 last;
    rewrite ^test2/test_data$ /test2/test_data.php?$1 last;
    rewrite ^test2/motd_data$ /test2/motd_data.php?$1 last;
    rewrite ^test2/(.*)map.common.js$ /PMSFE/static/js/map.common.php last;
    rewrite ^test2/general_data$ /PMSFE/general_data.php?$1 last;



    location / {
    include /etc/nginx/mime.types;
        index index.php index.html index.htm;
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
            fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
      }
    }

    location /test2 {
    include /etc/nginx/mime.types;
    root /var/www/html/;
        index index.php index.html index.htm;
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
            fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
      }
    }

Cualquier consejo sobre cómo puedo hacer que esto funcione sería realmente apreciado, esta es la primera vez que uso Linux en general, y mucho menos intento alojar algo sustancial, desafortunadamente los ejemplos de nginx que encuentras son tan diferentes que es difícil evaluar qué se aplica a tu situación particular o no.

Intenté incluir las reglas de reescritura en cada ubicación como había visto en otra publicación, pero esto rompió la página midominio.co.uk con el mismo error que la nueva midominio.co.uk/test2/

Respuesta1

Qué tonto de mi parte. Uno / corto en mis reescrituras.

rewrite ^/test2/raw_data$ /test2/raw_data.php?$1 last;
rewrite ^/test2/test_data$ /test2/test_data.php?$1 last;
rewrite ^/test2/motd_data$ /test2/motd_data.php?$1 last;
rewrite ^/test2/(.*)map.common.js$ /PMSFE/static/js/map.common.php last;
rewrite ^/test2/general_data$ /PMSFE/general_data.php?$1 last;

¡ahora trabaja!

información relacionada