Nginx- 사용자 정의 404 페이지
-
06-07-2019 - |
문제
Nginx+PHP (FastCGI)는 저에게 좋습니다. 존재하지 않는 PHP 파일로의 경로를 입력하면 기본 404 오류 페이지 (유효하지 않은 .html 파일의 경우)를 가져 오는 대신 "입력 파일 없음"을 얻습니다.
이 404 오류 페이지를 사용자 정의하려면 어떻게해야합니까?
해결책
nginx에서 error_page 속성을 사용합니다 구성.
예를 들어, 404 오류 페이지를 /404.html
, 사용
error_page 404 /404.html;
500 오류 페이지를 설정합니다 /500.html
다음과 같이 쉽습니다.
error_page 500 /500.html;
다른 팁
nginx.conf의 모든 위치 블록에 대한 사용자 정의 오류 페이지 또는 사이트 전체에 대한 전역 오류 페이지를 설정할 수 있습니다.
특정 위치에 대한 간단한 404 찾기 페이지로 리디렉션하려면 :
location /my_blog {
error_page 404 /blog_article_not_found.html;
}
404 페이지의 사이트 :
server {
listen 80;
error_page 404 /website_page_not_found.html;
...
표준 오류 코드를 함께 추가하여 여러 유형의 오류에 대한 단일 페이지를 가질 수 있습니다.
location /my_blog {
error_page 500 502 503 504 /server_error.html
}
HTTP 섹션에 정의 된 Server2라는 업스트림 서버가 있다고 가정하면 완전히 다른 서버로 리디렉션하려면 다음과 같습니다.
upstream server2 {
server 10.0.0.1:80;
}
server {
location /my_blog {
error_page 404 @try_server2;
}
location @try_server2 {
proxy_pass http://server2;
}
그만큼 수동 더 자세한 정보를 제공하거나 웹의 실제 예제에 대해 Nginx.conf 및 Error_Page라는 용어를 Google에서 검색 할 수 있습니다.
구문에주의하십시오! 큰 거북이는 그들을 상호 교환 적으로 사용했지만 :
error_page 404 = /404.html;
상태 코드가 200 인 404.html 페이지를 반환합니다 (=이 페이지에이를 전달했기 때문에).
error_page 404 /404.html;
(원본) 404 오류 코드로 404.html 페이지를 반환합니다.
https://serverfault.com/questions/295789/nginx-return-correct-headers-with-custom-error-documents
"ERRER_PAGE"매개 변수는 리디렉션을 만들어 요청 메소드를 "get"으로 변환하면 사용자 정의 응답 페이지가 아닙니다.
가장 쉬운 솔루션은입니다
server{
root /var/www/html;
location ~ \.php {
if (!-f $document_root/$fastcgi_script_name){
return 404;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params.default;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
그건 그렇고, Nginx가 PHP 스크립트로 404 상태를 처리하려면 추가해야합니다.
[fastcgi_intercept_errors][1] on;
예를 들어
location ~ \.php {
#...
error_page 404 404.html;
fastcgi_intercept_errors on;
}
이 답변은 더 이상 권장되지 않습니다 try_files
보다 빠르게 작동합니다 if
이 맥락에서. 간단히 추가하십시오 try_files
PHP 위치 블록에서 파일이 존재하는지 테스트하려면 404를 반환합니다.
location ~ \.php {
try_files $uri =404;
...
}