Nginx 서버 에서 404 오류 페이지 를 설정 할 때 주의 할 점
404 는 해당 코드 로 "페이지 를 찾 을 수 없습니다" (Page Not Found) 라 고 표시 합 니 다. Google 은 "소프트 404" 에 대해 다음 과 같이 설명 합 니 다.
Instead of returning a 404 response code for a non-existent URL, websites that serve "soft 404s" return a 200 response code.
존재 하지 않 는 URL 에 대해 서버 가 404 (Page Not Found) 코드 를 되 돌려 주지 않 고 200 (OK) 코드 를 되 돌려 준 것 은 정상 이 아니 라 는 것 이다.
그리고 다른 검색 결과 에서 제 가 또 이런 말 을 봤 어 요.
Soft 404s can occur as a result of configuration errors when an Error Document 404 is specified as an absolute path rather than a relative path.
보고 문득 깨 달 았 습 니 다. 제 404 사용자 정의 페이지 는 그림 과 CSS 가 있 고 그림 과 CSS 는 모두 상대 적 인 경로 (eg. / xxx / xxx) 로 페이지 에 쓰 여 있 기 때문에 전체 사이트 에서 404 페이지 의 그림 을 볼 수 있 도록 404 페이지 를 Nginx 에서 절대 경로 (eg. / www. slyar. com / xxx / xxx) 로 정 의 했 습 니 다. 페이지 가 외부 페이지 로 여 겨 졌 기 때문에그래서 200 코드 를 되 돌려 주 고 '소프트 404' 오류 가 발생 합 니 다.
잘못 을 알 게 되면 처리 하기 쉽다.404 페이지 의 경 로 를 상대 경로 로 정의 하고 그림 과 CSS 는 페이지 에서 절대 경 로 를 사용 하면 됩 니 다.
Nginx 에서 정확 한 404 페이지 정의 방법:
1. VIM 은 Nginx 프로필 을 편집 하고 vhosts 를 사용 하면 따로 고 칩 니 다. 쓸모없는 것 은 nginx. conf 를 직접 고 칩 니 다.
vim /usr/local/nginx/conf/nginx.conf
or
vim /usr/local/nginx/conf/vhosts/slyar.com.nginx.conf
2. 상대 경로 로 404 페이지 지정
server {
#error_page 404 //www.slyar.com/404.html
error_page 404 /404.html;
}
3.: wq 저장 종료, Nginx 다시 불 러 오기
/usr/local/nginx/sbin/nginx -s reload
4. 존재 하지 않 는 페이지 를 다시 확인 하고 404 로 돌아 가 는 지 확인 합 니 다.
curl -I //www.slyar.com/slyar
HTTP/1.1 404 Not Found
Server: nginx/1.0.15
Date: Mon, 27 Aug 2012 08:13:56 GMT
Content-Type: text/html
Content-Length: 2110
Connection: keep-alive
5. Nginx 오류 페이지 와 Header 에 있 는 버 전 번호 Nginx 를 숨 기 는 것 은 오류 페이지 입 니 다. 예 를 들 어 403 페이지 와 404 페이지 에 Nginx 버 전 번 호 를 기본적으로 표시 합 니 다. 이것 은 매우 안전 하지 않 습 니 다. 해커 는 Nginx 버 전 번 호 를 통 해 서버 를 침입 하 는 방법 을 알 수 있 습 니 다. 특정 버 전의 서버 프로그램 에 구멍 이 있 을 수 있 기 때 문 입 니 다.
Nginx 의 버 전 번 호 는 보통 두 곳 에 나타 납 니 다.
1. HTTP Header, 예 를 들 어 Server: nginx / 1. x. x 등 정 보 는 웹 서버 가 사용 하 는 소프트웨어 이름과 버 전 번 호 를 노출 합 니 다.
2. 403 과 404 등 오류 페이지 에 기본적으로 Nginx 1. x. x. x 등 버 전 정보 가 표 시 됩 니 다.
Nginx 버 전 번 호 를 숨 기 는 것 은 매우 간단 합 니 다. 공식 적 으로 아주 좋 은 해결 방안 을 제 시 했 습 니 다. server 를 이용 합 니 다.tokens (Whether to send the Nginx version number in error pages and Server header)
설정 파일 Nginx. conf 를 열 고 http 세그먼트 에 다음 인 자 를 추가 합 니 다.
http {
...
server_tokens off;
}
이후 nginx - s reload 에서 Nginx 설정 을 다시 불 러 오 면 Nginx 버 전 번 호 를 숨 길 수 있 습 니 다.curl 자체 테스트 를 사용 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.