国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - Nginx處理請求時的匹配規則詳析

Nginx處理請求時的匹配規則詳析

2020-03-12 14:13Abyssknight Nginx

這篇文章主要給大家介紹了關于Nginx處理請求時的匹配規則的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Nginx具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

nginx 在收到一條請求時將先通過 server_name 匹配一個 server, 然后使用 server 中的 location 繼續匹配.

匹配 server_name

在 nginx 中, server_name 決定了當收到一個請求后哪一個 server 會被使用. nginx 會使用請求頭中的 Host 字段與 server_name 進行匹配. 定義 server_name 時可以使用 完全名稱、通配符名稱、正則表達式名稱, 它們的匹配順序如下:

  • 完全匹配
  • 前通配符匹配, 即 *.example.org
  • 后通配符匹配, 即 mail.*
  • 正則表達式匹配

如果沒有匹配到結果, 將會使用 default_server 進行處理, 如果沒有定義, 則第一個定義的為 default_server. 使用三個簡單的 server 作為例子, 讓他們監聽 80 端口, server_name 分別設置為 *.org、*.net、*.com:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
 listen 80;
 server_name example.org www.example.org;
 return 401;
}
 
server {
 listen 80;
 server_name example.net www.example.net;
 return 402;
}
 
server {
 listen 80;
 server_name example.com www.example.com;
 return 403;
}

在上面的配置中, 默認的服務器為 第一個, 隨便訪問一個不存在的 server 將會返回 401. 不過可以使用 default_server 手動設置一個默認主機, default_server 設置在 listen 字段, 如下:

?
1
2
3
4
server {
 listen 80 default_server;
 server_name example.net www.example.net;
}

之后再匹配時, 未匹配到將會使用這個 server.

禁止訪問

如果想要禁止一個沒有攜帶 Host 字段的請求, 可以定義如下 server:

?
1
2
3
4
5
server {
 listen 80;
 server_name "";
 return 444;
}

server_name 定義為空字符串, 如果 Host 字段為空或不存在, 將會匹配到這個 server, 然后返回 404 狀態碼.

Nginx 的444 狀態比較特殊,如果返回 444 那么客戶端將不會收到服務端返回的信息,就像是網站無法連接一樣, 瀏覽器直接顯示 502. 但是如果使用反向代理, 還是顯示正常狀態碼

如果想要禁止訪問不存在的主機, 可以這樣定義:

?
1
2
3
4
5
server {
 listen 80 default_server;
 server_name _;
 return 444;
}

_ 在這里沒有任何特別含義, 因為一個域名中不會出現 _, 所以不會與任何真實的域名相同, 使用其他非法字符是相同的道理.

同時匹配 IP 和 server_name

現在來看一下對于監聽不同 IP 和不同 server_name 混合使用時是如何處理的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
 listen 192.168.1.1:80;
 server_name example.org www.example.org;
}
 
server {
 listen 192.168.1.1:80;
 server_name example.net www.example.net;
}
 
server {
 listen 192.168.1.2:80;
 server_name example.com www.example.com;
}

在這個配置中, nginx 首先匹配 IP, 匹配到后再匹配它們的 server_name, 如果沒有匹配到 server_name, 則使用到它們默認的 server. 舉個例子, 如果一個域名為 www.example.com 的請求來自 192.168.1.1:80. 但是監聽 192.168.1.1:80 的 server 只有兩個, 這兩個都不能匹配 www.example.com, 那么就使用這兩個 server 中的默認主機, 由于沒有使用 defualt_server 定義監聽, 所以默認為第一個即 www.example.org 這個 server. 當然你可以定義 defualt_server:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
 listen 192.168.1.1:80;
 server_name example.org www.example.org;
}
 
server {
 listen 192.168.1.1:80 default_server;
 server_name example.net www.example.net;
}
 
server {
 listen 192.168.1.2:80 default_server;
 server_name example.com www.example.com;
}

匹配 location

在 nginx 匹配到一個 server 后, 就會通過 location 繼續處理請求, 下面是一個示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
 listen 172.17.0.3:80;
 server_name _;
 
 location / {
 return 401;
 }
 
 location ~*\.(gif|jpg|png)$ {
 return 402;
 }
 
 location ~*\.(gif|jpg|png)$ {
 return 404;
 }
 
 location /api {
 return 403;
 }
}

nginx 首先會在所有的 location 中搜索 前綴進行匹配, 匹配到前綴后, 將按順序匹配使用 正則表達式 定義的 location, 匹配到就結束, 如果沒有匹配到, 則使用之前匹配到前綴的那個 location 進行處理, 下面是具體匹配的例子:

  • 一個 /x.gif 請求, 首先匹配到的前綴為 /, 然后使用剩下的 x.gif 跟 location 的正則去匹配, 先匹配到了 location ~*\.(gif|jpg|png)$, 返回 402.
  • 一個 /x.pdf 請求, 由于 x.pdf 無法被匹配到, 所以使用 location / 進行處理.
  • 一個 /api/x.gif, 首先匹配到前綴為 /api, 然后使用剩下的 x.gif 跟 location 的正則去匹配, 先匹配到了 location ~*\.(gif|jpg|png)$, 返回 402.
  • 一個 /api/x.pdf 請求, 由于 x.pdf 無法被匹配到, 所以使用 location /api 進行處理.

參考

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。

原文鏈接:https://juejin.im/post/5ddba048f265da7dcc7e5954

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品网站在线观看 | 精品免费国产 | 国产高清一区 | 一区二区中文字幕 | 国产精品99 | 一色视频 | 黄小视频 | 欧美一区二区大片 | 午夜婷婷丁香 | 免费一级毛片 | 精品国产乱码久久久久久牛牛 | 精品福利一区二区三区 | 久久国产一区视频 | 每日更新在线观看av | 久久久久久天堂 | 久久网一区二区三区 | 91精品一区二区三区久久久久久 | 日韩精品一二三区 | 在线中文视频 | 久久国内精品 | 亚洲欧美另类久久久精品2019 | av在线电影观看 | 国产精品久久久久久久久久久免费看 | 夜夜爽av福利精品导航 | 亚洲国产精品一区二区三区 | 99精品久久久久久久免费 | 91精品国产综合久久婷婷香蕉 | 91久久九色 | 日穴视频在线观看 | 中文视频在线 | 噜噜噜在线观看免费视频日本 | 99免费视频| 日本乱轮视频 | 伊人青青草 | 国产在线精品一区二区 | 91成人在线 | 亚洲欧美一区二区三区国产精品 | 国产1区 | 黄色成人在线观看视频 | 精品无码久久久久久国产 | 国产女精品 |