상세 Nginx 가상 호스트 구성에서 server_name의 구체적인 묘사

3420 단어
server_name 명령은 도메인 이름을 기반으로 하는 가상 호스트를 설정할 수 있으며, 요청 헤더의 내용에 따라 IP 서버에서 여러 개의 도메인 이름을 설정할 수 있습니다.다음 서버들_name 매개변수는 유효합니다.

server_name jb51.net;
server_name jb51.net www.jb51.net;
server_name *.jb51.net;
server_name .jb51.net;

server_name nginx.*;

server_name jb51.netg bucknell.net brackley.org;
server_name localhost litchfield bleddington;

server_name "";


여러 도메인 이름 사이를 공백으로 구분합니다.nginx는 가상 호스트에 하나 이상의 이름을 지정할 수 있으며, "*"어댑터를 사용하여 가상 호스트의 이름을 설정할 수 있습니다.위의 예에서 우리는 매우 많은 특수한 부분을 보았다.
첫 번째 예, 먼저 server_를 정의합니다.name 은 jb51입니다.그럼http://jb51.net요청이 호스트에 전송됩니다.두 번째 예는 jb51을 설정했습니다.net 및 www.jb51.그럼http://jb51.net및//www.jb51.net의 요청이 이 호스트에 전송됩니다. *.jb51.net 및.jb51.net은 같은 설정입니다. 이 호스트가 jb51에서 온 모든 것을 처리하도록 설정합니다.net의 하위 도메인 이름, 예를 들어 www.jb51.net,blog.jb51.net 등 2조 서버_name 설정nginx.*,서버를 설정하여nginx로 모든 것을 처리합니다.처음 요청.예를 들어nginx.com,jb51.net,nginx.net,nginx.baidu.com 다음 그룹 첫 번째 서버_name 설정, 호스트가 세 개의 도메인 이름에서 요청을 처리하도록 설정합니다.nginx는 유효한 도메인 이름이 아닌 이름을 설정할 수 있습니다.예를 들어 다음 설정에서 유효한 도메인 이름이 아닌 세 가지 예를 볼 수 있습니다.localhost,litchfiled,bledington.nginx는 요청한 HTTP 헤더의 도메인 이름만 찾지만 도메인 이름이 유효한지 판단하지 않습니다. 이 예에서 이 호스트 이름은/etc/hosts에 할당할 수 있습니다.이 컴퓨터에서 디버깅할 때 도메인이 아닌 호스트 이름을 사용하는 것이 때때로 더 적합하다.마지막 예, server_name는 빈 인용부호로 설정되어 있으며, nginx가 호스트name이 없는 모든 요청을 포착하거나, 호스트name이 다른 서버에 없음을 알려줍니다_name에서 지정합니다.
요약하자면, server_name 명령은 요청을 받은 후의 일치 순서: 1, 정확한 server_name 일치 예:

server { listen 80; server_name domain.com www.domain.com; ...}

2, 와일드카드로 시작하는 문자열:

server { listen 80; server_name .domain.com;...}

3, 와일드카드로 끝나는 문자열:

server { listen 80; server_name www.; ...}

4. 정규 표현식 일치:

server { listen 80; server_name ~^(?.+).domain.com$;...}

nginx는 1,2,3,4의 순서에 따라 서버name를 일치시킵니다. 일치하는 것이 하나만 있으면 검색을 중지합니다. 따라서 이 명령을 사용할 때 일치하는 순서를 구분해야 합니다. (location 명령과 유사합니다.)server_name 명령은 매우 실용적인 기능으로 정규 표현식의 포획 기능을 사용할 수 있다. 이렇게 하면 가능한 한 프로필을 간소화할 수 있다. 왜냐하면 너무 긴 프로필의 일상적인 유지보수도 매우 불편하기 때문이다.다음은 두 가지 구체적인 응용 프로그램입니다.
1. 하나의 서버 블록에 여러 사이트를 구성합니다.
 
  
server { listen 80; server_name ~^(www.)?(.+)$; index index.php index.html; root /data/wwwsite/$2; }

사이트의 홈 디렉토리는 다음과 같은 구조와 유사해야 합니다.
 
  
/data/wwwsite/domain.com/data/wwwsite/nginx.org/data/wwwsite/baidu.com/data/wwwsite/google.com

이렇게 하면 하나의 서버 블록만 사용하여 여러 사이트의 설정을 완성할 수 있다.
2. 한 서버 블록에서 한 사이트에 여러 개의 2급 도메인 이름을 설정합니다.
실제 사이트 디렉터리 구조에서 우리는 일반적으로 사이트의 2급 도메인 이름을 위해 독립적으로 디렉터리를 만들 수 있다. 마찬가지로 우리는 정규 포획을 사용하여 한 서버 블록에 여러 개의 2급 도메인 이름을 설정할 수 있다.

server {
listen 80;
server_name ~^(.+)?.domain.com$;
index index.html;
if ($host = domain.com){
rewrite ^ http://www.domain.com permanent;
}
root /data/wwwsite/domain.com/$1/;}

사이트의 디렉토리 구조는 다음과 같습니다.

/data/wwwsite/domain.com/www//data/wwwsite/domain.com/nginx/

이렇게 www.domain을 방문합니다.com 시 root 디렉터리는/data/wwwsite/domain입니다.com/www/,nginx.domain.com은/data/wwwsite/domain입니다.com/nginx/를 참조하십시오.뒤if문장의 역할은domain을com의 방위를 www.domain으로 리디렉션합니다.com, 이렇게 하면 사이트의 메인 디렉터리 접근을 해결할 뿐만 아니라, seo에서 www.domain에 대한 접근도 증가시킬 수 있다.com의 도메인 이름이 중요합니다.

좋은 웹페이지 즐겨찾기