nginx 다시 쓰기 또는 내부 리디렉션주기


13

존재하지 않는 URL에 액세스하려고 할 때 내 nginx 구성에서 리디렉션주기의 원인을 파악하려고 시도하는 테이블에 대해 머리를 두드리는 구성은 다음과 같습니다.

server {
        listen       127.0.0.1:8080;
        server_name  .somedomain.com;
    root  /var/www/somedomain.com;

        access_log /var/log/nginx/somedomain.com-access.nginx.log;
    error_log  /var/log/nginx/somedomain.com-error.nginx.log debug;

        location ~* \.php.$ {
        # Proxy all requests with an URI ending with .php*
        # (includes PHP, PHP3, PHP4, PHP5...)
        include /etc/nginx/fastcgi.conf;
        }

        # all other files
        location / {
            root  /var/www/somedomain.com;
        try_files $uri $uri/ ;
        }

    error_page 404 /errors/404.html;
        location /errors/ {
                alias /var/www/errors/;
        }       

        #this loads custom logging configuration which disables favicon error logging
        include /etc/nginx/drop.conf;
}

이 도메인은 테스트 목적으로 만 사용되는 간단한 STATIC HTML 사이트입니다. 나는 fastcgi_intercept_errors를 켜면 PHP-FPM이 주어진 파일을 찾을 수 없다는 응답으로 error_page 지시어가 시작될 것으로 기대합니다. http 블록 및 nave error_page 설정에서 요청이 내부 리디렉션의 어딘가에 있기 전에도 실패한다고 생각합니다. 도움을 주시면 감사하겠습니다.


클라이언트 브라우저가 리디렉션 루프를보고합니까, 아니면 nginx입니까? 클라이언트 인 경우 리디렉션이 어떤 위치에 있습니까?
Shane Madden

둘 다보고합니다. 클라이언트는 결국 /errors//errors//errors//errors//errors/...404.html의 URL로 끝납니다
milosgajdos

nginx의 로그 항목은 어떻게 생겼습니까?
Shane Madden

답변:


11

범인은 : try_files $uri $uri/ ;

http://nginx.org/r/try_files (마지막 매개 변수는 리턴 코드 또는 내부 리디렉션에 대한 URI 임)

파일이 없으면 마지막 매개 변수로 지정된 URI로 내부 경로 재 지정됩니다.


감사. Roots Trellis LEMP 설정에서 이러한 오류 중 하나가 발생했습니다. WooCommerce 데이터 가져 오기 후 발생했습니다. 전에는 없었습니다. 이 경우에 무엇을 추천 하시겠습니까? 매개 변수를 제거 $uri/하시겠습니까? 여기 매개 변수를 참조하십시오 : github.com/roots/trellis/blob/…
rhand

2

다른 사람들이 말했듯이, 이것은 범인입니다.

    try_files $uri $uri/ ;

try_files파일을 찾을 수없는 경우 마지막 매개 변수가 위치를 가리켜 야 하므로 리디렉션 루프를 만듭니다 . 다음과 같이을 추가하여 해결했습니다 =404.

    try_files $uri $uri/ =404 ;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.