簡單梳理一下nginx中關(guān)于server 和location的配置.
比如URL:www.mask_dev2.com:9999/login/
server管的前半部分,即:www.mask_dev2.com:9999
location管的是后半部分,即:/login/
一個nginx可以配置多個server。
每個server可以配置多個location。
URL的前半部分控制選擇哪一個server,后半部分控制選擇哪一個location,最終決定往哪里去請求.
server的配置
server { listen 9999; server_name www.mask_dev2.cn; location / { default_type text/html; content_by_lua ' ngx.say("<p>first</p>") '; }}server { listen 9999; server_name www.mask_dev2.*; location / { default_type text/html; content_by_lua ' ngx.say("<p>second</p>") '; }}server { listen 9998; server_name _; location / { default_type text/html; content_by_lua ' ngx.say("<p>third</p>") '; }}
首先,請求nginx的地址,肯定是請求的nginx所在的服務(wù)器,也就是說ip是固定的。
也就是說,無所謂server_name是什么,都是指的當(dāng)前服務(wù)器.
那么當(dāng)前服務(wù)器是怎樣對應(yīng)多個域名呢,這個只需要在相應(yīng)的dns服務(wù)器中進(jìn)行添加,就行了,比如暫時把本機(jī)當(dāng)成dns服務(wù)器,修改hosts
127.0.0.1 localhost
127.0.0.1 www.mask_dev2.cn
127.0.0.1 www.mask_dev2.com
server匹配順序
server_name與host匹配優(yōu)先級如下:
1、完全匹配
2、通配符在前的,如*.test.com
3、在后的,如www.test.*
4、正則匹配,如~^/.www/.test/.com$
如果都不匹配
1、優(yōu)先選擇listen配置項后有default或default_server的
2、找到匹配listen端口的第一個server塊
location配置
找到server之后,再去找具體的location
server { listen 9998; server_name _; location = / { #規(guī)則A } location = /login { #規(guī)則B } location ^~ /static/ { #規(guī)則C } location ~ /.(gif|jpg|png|js|css)$ { #規(guī)則D } location ~* /.png$ { #規(guī)則E } location !~ /.xhtml$ { #規(guī)則F } location !~* /.xhtml$ { #規(guī)則G } location / { #規(guī)則H }
語法規(guī)則:
location [=||*|^~] uri { … }
新聞熱點
疑難解答
圖片精選