Nginx 서버 에서 404 오류 페이지 를 설정 할 때 주의 할 점

3041 단어
VPS 가 바 뀐 어느 날 Google 관리자 도구 콘 솔 에서 대량의 '소프트 404' 오류 가 발생 했 습 니 다. 일부 자 료 를 찾 아 보 니 Nginx 에서 404 페이지 를 설정 하 는 방법 이 잘못 되 어 오류 가 발생 했 습 니 다. 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 자체 테스트 를 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기