Nginx 재작성 규칙 - 다중 위치 PHP

Nginx 재작성 규칙 - 다중 위치 PHP

하나는 아래로, 하나는 간다! 나는 이전에 내 구성에 문제가 있었던 모든 것을 완전히 이해했으며 Stack Overflow에서 Cemal에게 다시 한 번 감사를 표하고 싶습니다. 이제 /location/에 index.php가 표시됩니다.

새로운 문제는 다시 쓰기 규칙입니다. 현재 전역적으로 설정되어 있으며 각 위치는 동일한 작업을 수행해야 합니다(복제된 PHP 프런트 엔드이지만 특정 항목에 대한 액세스가 제한되어 있습니다).

현재 메인 domain.com은 작동하지만 mydomain.com/test는 메인 PHP를 로드하지만 재작성에서 데이터를 전달하지 않습니다. try 파일을 사용하여 작동하게 하는 방법을 찾았지만 정규 표현식의 조언을 사용하여 작동하도록 하는 데 어려움을 겪고 있습니다.여기에서 발견.

시도하지 않고도 다음과 같은 경우 이러한 파일이 존재함에도 불구하고 nginx에서 raw_data 또는 General_data를 찾을 수 없다는 오류가 발생하므로 다시 쓰기 규칙이어야 한다고 가정할 수 있습니다.

기존 재작성 규칙을 복제하고 앞에 /test2/를 붙였지만 여전히 찾을 수 없습니다.

2018/02/27 13:37:46 [오류] 31485#31485: *49483 열기()

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

어쨌든 그것은 나를 결론으로 ​​이끄는 오류입니다.

내 현재 구성은 다음과 같습니다.관련 부분-

}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;
      }
    }

이 작업을 수행할 수 있는 방법에 대한 조언을 주시면 정말 감사하겠습니다. 일반적인 Linux를 사용하는 것은 처음입니다. 중요한 것을 호스팅하려고 시도하는 것은 말할 것도 없고, 안타깝게도 주변에서 찾은 nginx 예제가 너무 다르기 때문에 귀하에게 적용되는 사항을 측정하기가 어렵습니다. 특별한 상황이든 아니든.

다른 게시물에서 본 것처럼 각 위치에 다시 쓰기 규칙을 포함하려고 했지만 이로 인해 새로운 mydomain.co.uk/test2/와 동일한 오류가 발생하면서 mydomain.co.uk 페이지가 중단되었습니다.

답변1

정말 바보같아. 내 재작성이 하나/짧습니다.

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;

이제 작동합니다!

관련 정보