Regras de reescrita Nginx - PHP em vários locais

Regras de reescrita Nginx - PHP em vários locais

Um já foi, falta um! Eu entendo perfeitamente tudo o que havia de errado com minha configuração antes e gostaria de agradecer mais uma vez ao Cemal do Stack Overflow. O /location/ agora está exibindo index.php.

O novo problema é que as regras de reescrita. Atualmente, eles estão configurados globalmente e cada local precisa fazer a mesma coisa (eles são front-ends PHP duplicados, mas um deles tem acesso limitado a certas coisas).

No momento o domínio principal.com funciona, mas o meudomínio.com/test está carregando o PHP principal mas não passando os dados dos rewrites. Eu encontrei uma maneira de fazê-lo funcionar com arquivos try, mas estou lutando para fazê-lo funcionar usando o conselho de regexencontrado aqui.

Da forma como está, sem tentativa, o seguinte leva a erros de não ser capaz de encontrar raw_data ou general_data no nginx, apesar da existência desses arquivos, então só posso assumir que devem ser as regras de reescrita.

Clonei as regras de reescrita existentes e prefixei-as com /test2/ mas ainda não consigo localizá-las.

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

"/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/"

esse é o erro que me levou à conclusão de qualquer maneira.

Aqui está minha configuração atualas 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;
      }
    }

Qualquer conselho sobre como posso fazer isso funcionar seria muito apreciado, esta é minha primeira vez usando Linux em geral, muito menos tentando hospedar algo substancial, infelizmente os exemplos de nginx que você encontra são tão diferentes que é difícil avaliar o que se aplica ao seu situação particular ou não.

Tentei incluir as regras de reescrita em cada local, como vi em outra postagem, mas isso quebrou a página mydomain.co.uk com o mesmo erro do novo mydomain.co.uk/test2/

Responder1

Tão bobo da minha parte. Um / curto em minhas reescritas.

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;

agora funciona!

informação relacionada