做別人的網(wǎng)站詐騙視頻下載廣州網(wǎng)站優(yōu)化排名系統(tǒng)
server 上下文
server {
}
server
指令用于配置一個虛擬服務(wù)。listen
指令描述了本服務(wù)可接受鏈接的所有地址和端口,server_name
指令列舉了所有服務(wù)的名字,例如
server {listen 80;server_name example.org www.example.org;
}
listen 指令
Syntax:
listen address[:port] [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];listen port [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];listen unix:path [default_server] [ssl] [http2 | quic] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];Default: listen *:80 | *:8000;
Context: server
例如一些常見的用法,listen
指令指定了該服務(wù)監(jiān)聽的地址和端口
listen 127.0.0.1:8000;
listen 127.0.0.1; # 不加端口,默認(rèn)80
listen 8000;
listen *:8000;
listen localhost:8000;#IPv6 addresses
listen [::]:8000;
listen [::1];
server_name 指令
Syntax: server_name name ...;
Default:
server_name "";
Context: server
設(shè)置虛擬服務(wù)的名字,可以使用通配符和正則表達(dá)式
server_name example.com www.example.com;server_name example.com *.example.com www.example.*;server_name www.example.com ~^www\d+\.example\.com$;
多服務(wù)請求處理
當(dāng)有多個服務(wù)時,nginx如何決定使用哪個server進(jìn)行處理呢?例如在*:80
端口監(jiān)聽了多個服務(wù):
server {listen 80 default_server;server_name test.com;default_type text/html;location / {return 200 'Default Main Server\n';}
}server {listen 80;server_name zh.test.com;default_type text/html;location / {return 200 'Chinese Server\n';}
}server {listen 80;server_name en.test.com;default_type text/html;location / {return 200 'English Server\n';}
}
nginx 將通過測試請求頭中的Host
字段來決定使用哪個服務(wù)。如果沒有server name 被匹配到,或者請求中不包含請求頭,則使用該端口的默認(rèn)服務(wù)。listen
指令中的default_server
可以用來顯式配置默認(rèn)服務(wù),如果沒有該字段,那么默認(rèn)使用該端口的第一個服務(wù)。
使用curl請求測試,分別得到
$ curl -H ‘Host: test.com' -v localhost
Default Main Server
$ curl -H ‘Host: zh.test.com' -v localhost
Chinese Server
$ curl -H ‘Host: en.test.com' -v localhost
English Server
name-based 和 IP-based混合虛擬服務(wù)
服務(wù)器可以有多個公網(wǎng)IP以及解析多個域名,如下配置:
server {listen 127.0.0.2:80;server_name test.com;default_type text/html;location / {return 200 'Default Main Server\n';}
}server {listen 127.0.0.1:80;server_name zh.test.com;default_type text/html;location / {return 200 'Chinese Server\n';}
}server {listen 127.0.0.1:80;server_name en.test.com;default_type text/html;location / {return 200 'English Server\n';}
}
訪問測試:
$ curl -H 'Host: test.com' -v 127.0.0.1
Chinese Server
$ curl -H 'Host: test.com' -v 127.0.0.2
Default Main Server
$ curl -H 'Host: zh.test.com' -v 127.0.0.1
Chinese Server
$ curl -H 'Host: zh.test.com' -v 127.0.0.2
Default Main Server