Nginx에서 Wordpress를 실행하는 서버에 JavaScript 파일을 호스팅했습니다. 파일을 삭제했지만 여전히 여러 추천자로부터 여러 요청이 있습니다. 이러한 리퍼러는 다른 URL과 IP 주소에서 왔습니다.
요청이 너무 많아서 서버 성능에 영향을 미치는 것 같아서 차단하고 싶습니다.
이러한 요청을 차단할 수 있는 방법이 있나요?
답변1
nginx는 더 이상 파일 시스템을 확인할 필요가 없고 410 오류를 보낼 때 필요하지 않기 때문에 이전 javascript의 위치가 더 이상 유효하지 않다고 nginx를 명시적으로 구성하면 성능이 향상될 것이라고 상상합니다. 404 오류 페이지를 보내려면 다음 중 하나를 수행하세요.
location /path/to/script.js {
return 410 ;
}
HTTP 상태 코드 410: 사라짐
요청한 리소스는 더 이상 서버에서 사용할 수 없으며 전달 주소도 알려져 있지 않습니다. 이 상태는 영구적인 것으로 간주될 것으로 예상됩니다. 링크 편집 기능이 있는 클라이언트는 사용자 승인 후 Request-URI에 대한 참조를 삭제해야 합니다. 서버가 조건이 영구적인지 여부를 알 수 없거나 결정할 수 있는 기능이 없는 경우 상태 코드 404(찾을 수 없음)를 대신 사용해야 합니다. 달리 명시하지 않는 한 이 응답은 캐시 가능합니다.
410 응답은 주로 리소스를 의도적으로 사용할 수 없으며 서버 소유자가 해당 리소스에 대한 원격 링크를 제거하기를 원한다는 사실을 수신자에게 알려 웹 유지 관리 작업을 지원하기 위한 것입니다. 이러한 이벤트는 제한된 시간 동안 진행되는 판촉 서비스 및 더 이상 서버 사이트에서 근무하지 않는 개인에게 속한 리소스에 대해 일반적입니다. 영구적으로 사용할 수 없는 모든 리소스를 "사라짐"으로 표시하거나 일정 기간 동안 표시를 유지할 필요는 없습니다. 이는 서버 소유자의 재량에 달려 있습니다.
답변2
location = /deleted.js {
default_type text/plain;
return 410 "410";
#access_log off;
}
위와 같이 액세스 로그를 비활성화하거나, 충분히 새로운 nginx를 실행하는 경우 다음을 구성할 수 있습니다.access_log
버퍼링을 하려고 합니다. 디스크 액세스는 일반적으로 비용이 많이 들고 속도를 저하시킬 가능성이 높습니다.
return
그런데 자동으로 암시를 사용하면 log_not_found off;
404를 생성하도록 vfs에 맡기는 것보다 이미 더 낫습니다.
답변3
이는 iptable의 문자열 모듈을 사용하여 http 헤더 내용을 확인하는 아이디어입니다. 물론 특별한 경우에 맞게 조정해야 합니다.http://spamcleaner.org/en/misc/w00tw00t.html
그러나 들어오는 모든 패킷을 검사하고 웹 서버에서 이를 처리하도록 하는 것 사이에서 무엇이 더 빠른지 잘 모르겠습니다. 결국에는 특정 URL에 대해 404를 즉시 반환하도록 서버 구성에 한 줄을 추가했습니다. 웹마스터와 검색 엔진이 링크를 수정함에 따라 시간이 지남에 따라 트래픽이 저절로 감소합니다(그리고 404 오류로 인해 최신 웹 검색 엔진에서 잘못된 위치 지정이 발생하므로 그렇게 될 것입니다).