>  기사  >  백엔드 개발  >  Nginx는 웹 서버에 액세스하기 위해 IP 또는 바인딩되지 않은 도메인 이름을 직접 사용하는 것을 금지합니다.

Nginx는 웹 서버에 액세스하기 위해 IP 또는 바인딩되지 않은 도메인 이름을 직접 사용하는 것을 금지합니다.

WBOY
WBOY원래의
2016-07-30 13:31:051208검색

오늘은 IP를 통한 서버 접근을 금지하도록 Nginx를 설정하겠습니다. 도메인 이름을 통해서만 접근이 가능합니다. 이는 등록되지 않은 도메인 이름을 자신의 서버 IP로 파싱하여 서버 연결이 끊어지는 것을 방지하기 위함입니다. . 인터넷에서 검색 다음 해결 방법:

Nginx의 기본 가상 호스트는 사용자가 IP를 통해 액세스하거나 설정되지 않은 도메인 이름을 통해 액세스할 때 적용됩니다(예: 누군가 자신의 도메인 이름을 귀하의 IP로 지정). 가장 중요한 점은 서버 설정에 다음 행을 추가하는 것입니다.

listen 80 default; # # 뒤의 기본 매개변수는 이것이 기본 가상 호스트임을 나타냅니다.

이 설정은 매우 유용합니다.
예를 들어 누군가가 IP나 알 수 없는 도메인 이름을 통해 귀하의 웹사이트에 접속했을 때 유효한 콘텐츠의 표시를 금지하려는 경우 해당 사용자에게 500을 반환할 수 있습니다.
현재 국내 많은 PC방에서는 웹사이트 소유자에게 다음을 요구합니다. 등록되지 않은 호스트 헤더를 닫으면 도메인 이름이 이를 가리키며 문제가 발생합니다. 다음과 같이 설정할 수 있습니다.
서버 {
listen 80 default;
return 500;
}

또한 이러한 트래픽을 수집하여 자신의 웹사이트로 가져올 수도 있습니다. 다음을 수행하세요. 설정으로 이동하세요:
server {
listen 80 default;
rewrite ^(.*) http://www.linuxidc.com 영구;
}
== === =========================

위와 같이 설정한 후에는 IP를 통한 서버 접속이 사실상 불가능합니다. , 그러나 사용해야 하는 경우에 나타납니다. server_name 뒤에 여러 도메인 이름이 있으면 도메인 이름 중 하나에 액세스할 수 없습니다.

은 다음과 같이 설정됩니다.
server
{
Listen 80;
server_name www.linuxidc.com linuxidc.com
변경 전에는 server_name에서 www.linuxidc.com, linuxidc.com을 통해 서버에 접근할 수 있었습니다. linuxidc.com을 통해 서버에 액세스할 수 없습니다. www.linuxidc.com에 액세스할 수 있습니다

nginx -t를 사용하여 구성 파일을 감지하면 경고 메시지가 표시됩니다:

[warn]: conflicting server name " linuxidc.com” 0.0.0.0:80, 무시
구성 파일 /usr /local/webserver/nginx/conf/nginx.conf 구문은 괜찮습니다
구성 파일 /usr/local/webserver/nginx/conf /nginx.conf 테스트가 성공했습니다

listen 80 default를 통과했습니다. 그런 다음 문제를 해결하려면 server_name _을 추가하세요. 형식은 다음과 같습니다.

#Block IP access
server
{
기본값 80 듣기;
server_name _;

server_name www.linuxidc.com linuxidc.com

return 500;
}
또는
서버 {
listen 80 dufault;
server_name _;

server_name www.linuxidc.com linuxidc.com

rewrite ^(.*) http://www.linuxidc.net 영구;
}
이렇게 하면 linuxidc.com을 통해 서버에 액세스할 수 있으며 문제는 해결되지만 구체적인 이유는 아직 명확하지 않습니다.

nginx 전달:
첫 번째 경우: A 스테이션에 액세스하는 것이 B 스테이션으로 연결됩니다.
server {
server_name www.linuxidc.net;
rewrite ^(.* ) http://www.linuxidc.com$1 영구;
}
두 번째 경우: 사이트 A에 대한 모든 방문이 지정된 페이지로 리디렉션되는 것은 아닙니다
server {
server_name www.linuxidc.net ;
if ($host != 'linuxidc.net' ) {
다시 작성 ^/(.*)$ http://www.linuxidc.com/$1 영구;
}
}
첫 번째 서버 세그먼트에 기록된 경우
IP를 사용하여 액세스할 때도 리디렉션됩니다


그러나 여기에는 여전히 몇 가지 문제가 있습니다. 주소에 액세스하려면 IP를 사용해야 하며 다른 모든 것은 금지되어 있습니다. 어떻게 구성합니까? 예를 들어, Monitoring Treasure가 IP를 사용하여 내 컴퓨터의 nginx 상태 정보에 직접 액세스하고, IP를 사용하여 액세스하는 다른 모든 요청은 도메인 이름으로 리디렉션되기를 원합니다.

server {
listen 80 default;
server_name _;
location /xxxxx{
stub_status on;
access_log off;
}
location /{
rewrite ^ http://www.domain.com$request_uri?;
}
}

이렇게 하면 우리가 원하는 기능이 구현됩니다.

위 내용은 관련 콘텐츠를 포함하여 IP 또는 바인딩되지 않은 도메인 이름을 직접 사용하여 웹 서버에 액세스하는 것에 대한 Nginx의 금지 사항을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.