Nginx 가상 호스트 와 요청 배포
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 에 의 해 처 리 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.