2014-03-04 3 views
2

우선 nginx 사용자가 처음입니다. 그래서 아파치와 nginx의 차이점을 아직도 배우고 있습니다.nginx 기본 오류 페이지 구성

재고가 nginx 설치되어 있습니다. (apt-get install nginx-full) 설치 프로그램의 '/ etc/nginx/sites-enabled/default'에있는 기본 설정을 수정했습니다. 그러나 오류 페이지는 작동하지 않습니다. 내 docroot는/server/www이고 내 오류 페이지는/server/errors/디렉토리 내에 있습니다. 아래는 내 설정입니다.

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /server/www; 
    index index.html; 

    server_name website.com; 

    location/{ 
     try_files $uri $uri/ /index.html; 
    } 

    error_page 403 404 405 /40x.html; 
    location /40x.html { 
     root /server/errors; 
     internal; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /server/errors; 
     internal; 
    } 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

403 또는 404 페이지를 생성해야하는 모든 페이지는 index.html 파일을로드하기 만하면됩니다. 아마도 무언가가 500 개의 오류로 인해 발생했을 것으로 추측됩니다. 그러나 생성하기가 조금 더 어렵습니다.

또한 관련성이있는 경우 docroot 위의 오류 페이지를 이동했지만 이전에는 작동하지 않았습니다. 나는 '내부'플래그가 문서를 요청할 때 페이지를 내부로 보이지 않는 것처럼 보이기 때문에 그 이동을 만들었는데, 여전히 내가 직접 액세스 할 수 있기 때문입니다.

어떤 조언이나 도움이 될 것입니다.

+0

설정을 변경했을 때 nginx를 다시로드 했습니까? –

+0

http://wiki.nginx.org/HttpCoreModule - '주문'섹션을 읽어보십시오. – Danack

+0

예, 구성을 변경할 때마다 nginx를 다시 시작했습니다. –

답변

2

오류 문제는 위치/최종 값 /index.html과 관련되어 있습니다. 본질적으로, nginx는 uri를 먼저 파일로, 그 다음 디렉토리로 시도한 다음 index.html로 되돌려 놓았습니다. 그 대신 404로 돌아가고 싶었습니다. 그래서 아래로 변경했는데 이제는 작동합니다.

location/{ 
    try_files $uri $uri/ =404; 
}