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

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

WBOY
풀어 주다: 2016-07-30 13:31:05
원래의
1246명이 탐색했습니다.

오늘은 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿