Nginx 가상 호스트 와 요청 배포

4544 단어
선언:
Nginx 의 정적 웹 서버 는 주로 ngx 가 있 습 니 다.http_core_module 모듈 구현, Nginx 정적 웹 서버 이 몇 편의 글 은 기본 기능 을 포함 하 는 웹 정적 서버 를 어떻게 설정 하 는 지 기록 합 니 다. 주로 다음 과 같은 몇 가지 측면 입 니 다.
1. 가상 호스트 와 요청 배포
2. 파일 경로 정의
3. 메모리 와 디스크 자원 의 배분
4. 네트워크 연결 설정
5. MIME 형식의 설정
6. 클 라 이언 트 요청 에 대한 제한
7. 파일 작업 의 최적화
8. 클 라 이언 트 요청 에 대한 특수 처리
이 글 은 가상 호스트 를 어떻게 설정 하고 배 포 를 요청 하 는 지, 뒤의 몇 시 에 뒤의 글 에 일일이 기록 되 어 있 습 니 다.
IP 주소 의 수량 이 제한 되 어 있 기 때문에 (이것 은 다 들 어 보 았 을 것 입 니 다. IP4 는 이미 요 구 를 만족 시 킬 수 없습니다) 여러 도 메 인 이름 이 하나의 IP 주소 에 대응 하 는 경우 가 자주 존재 합 니 다. 이 때 Nginx 설정 파일 에서 servername (요청 에 대응 하 는 도 메 인 이름) 은 가상 호스트 를 정의 합 니 다. 모든 server 는 가상 호스트 입 니 다. 호스트 도 메 인 이름과 대응 하 는 요청 을 처리 하기 때문에 서버 에 있 는 Nginx 는 서로 다른 호스트 도 메 인 이름 의 HTTP 요청 을 처리 할 수 있 습 니 다.
 
1) 감청 포트
문법: listen address: port [default (0.8.21 에서 사용 중지) | default server |
[backlog=num|rcvbuf=size|sndbuf=size|accept_filter=filter|deferred|bind|ipv6only=[on|off]|ssl]];
기본 값: listen 80;
listen 매개 변 수 는 Nginx 서비스 가 포트 를 어떻게 감청 하 는 지 결정 합 니 다. 그 중에서 IP 주소, 포트, 호스트 이름 을 설정 할 수 있 고 매우 유연 합 니 다. 다음 과 같 습 니 다.
listen 127.0.0.1:8000; 
listen 127.0.0.1; #    80  
listen 8000;
listen *:8000;
listen localhost:8000;
listen [fe80::1];        #IPV6  
listen [:::a8c9:1234]:80;#IPV6  
listen 443 default_server ssl;
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;

 
 
 
 

接下来介绍一下listen参数的意义:

1.default:将所在的server块作为整个web服务的默认server块,默认nginx.conf中第一个server块为默认server。无法匹配任意一个主机域名的请求都会交给默认server处理。

2.default_server:与default一致。

3.backlog=num:表示tcp中backlog队列的大小,-1表示不做设置。在TCP三次握手的过程中,进程还没有开始处理监听句柄时,这些连接就会放在backlog队列中等待处理,如果backlog队列满了,新的TCP请求将不会建立连接。

4.rcvbuf=size:设置监听句柄的SO_RCVBUF参数。

5.sndbuf=size:设置监听句柄的SO_SNDBUF参数。

6.accept_filter:设置accept过滤器,只对FreeBSD操作系统有用。

7.deferred:设置该参数之后,worker不会被调度去处理仅仅完成TCP三次握手的连接,只要在用户真正的发送请求数据的时候(内核已经在网卡中收到请求数据包),内核才会调度worker进程去处理这个连接。该参数适合于大并发的情况,它可以有效的减轻worker进程的负担。

8.bind:绑定当前端口/地址对,当同时对一个端口监听多个地址时生效。

9.ssl:当前监听端口必须基于ssl协议。

 

2)主机名称

语法:server_name name[...];

默认:server_name "";

配置块:server

server_name后面可以跟多个主机名称,达到同时监听多个域名的效果,如下

server_name www.testweb.com、 download.testweb.com;

 
http 요청 을 처리 할 때 Nginx 는 요청 한 header 의 Host 정 보 를 가 져 와 server 의 servername 일치, 이 요청 을 처리 할 서버 를 결정 합 니 다. 하나의 요청 이 여러 서버 와 일치 할 수도 있 습 니 다. 이것 은 server 와 관련 됩 니 다.name 일치 하 는 우선 순위:
1. 모든 문자열 이 일치 하 는 server 선택name
2. 마스크 앞 에 있 는 server 선택name
3. 마스크 뒤에 있 는 server 선택name
4. 정규 표현 식 과 일치 하 는 server 를 선택 하 십시오.name
5. 기본 server 선택이름 블록
6. 첫 번 째 listen 포트 에 맞 는 server 블록 선택
 
3) 흩 어 진 목록 의 메모리 사용량
문법: servernames_hadh_bucket_size size;
기본 값: servernames_hash_bucket_size 32|64|128;
설정 블록: http, server, location
서버 를 빠르게 찾기 위해name 의 능력, Nginx 는 해시 표를 사용 하여 server 를 저장 합 니 다.name。이 매개 변 수 는 모든 산 목록 이 메모리 크기 를 차지 하 는 것 을 설정 합 니 다.
 
4)server_names_hash_max_size
문법: servernames_hash_max_size size;
기본 값: servernames_hash_max_size 512;
설정 블록: http, server, location
이 매개 변 수 는 산 목록 의 충돌 율 에 영향 을 줄 수 있 습 니 다. 이 매개 변 수 는 클 수록 메모리 가 많이 소모 되 지만 해시 키 의 충돌 이 낮 을 수록 검색 속도 가 빠 르 고 반대로 도 마찬가지 입 니 다.
 
5) 호스트 이름 재 설정 처리
문법: servername_in_redirect on|off;
기본 값: servername_in_redirect on;
설정 블록: http, server 또는 location
이 설정 은 servername 와 함께, 열 때 방향 변경 요청 시 server 사용 함 을 표시 합 니 다.name 에서 설정 한 첫 번 째 호스트 이름 은 원래 요청 한 host 헤드 를 대체 합 니 다.닫 으 면 방향 을 바 꿀 때 요청 자체 의 host 헤드 를 사용 합 니 다.
 
6)location
문법: location [= | ~ | ~ * | ^ ~ |]...
설정 블록: server
location 은 사용자 가 요청 한 url 을 사용 하여 일치 시 키 려 고 시도 합 니 다. 일치 하 는 데 성공 하면 location 블록 에 있 는 설정 을 선택 하여 사용자 의 요청 을 처리 합 니 다.location 의 일치 규칙 은 여러 가지 가 있 습 니 다. 다음은 간단하게 소개 하 겠 습 니 다.
1. = url 을 완전히 일치 시 키 는 것 을 나타 낸다. 예 를 들 어:
 
 
location = /api/instance/ {
#location  
} 

2. ~ 일치 할 때 대소 문자 가 민감 함 을 나타 낸다.
3. ~ * 일치 할 때 대소 문자 가 민감 하지 않다 는 뜻
4. ^ ~ 일치 할 때 앞부분 만 일치 하면 됩 니 다.
5. @ 은 Nginx 서비스 내부 의 재 설정 만 처리 하고 사용자 요청 을 직접 처리 하지 않 음 을 표시 합 니 다.
6. 모든 요청 과 일치 함 을 표시 합 니 다.
주: 하나의 요청 이 여러 location 과 일치 할 수 있 지만 모든 요청 은 첫 번 째 로 일치 하 는 location 에 의 해 처 리 됩 니 다.

좋은 웹페이지 즐겨찾기