nginx多l(xiāng)ocation配置實(shí)例代碼
前言
nginx server下配置多個(gè)location根據(jù)路徑匹的不同做不同的處理。
nginx常用正則表達(dá)式
語(yǔ)法規(guī)則: location [=|~|~*|^~] /uri/ { … }
- = 開頭表示:精確匹配。
- ^~ 開頭表示:區(qū)分大小寫以什么開頭。
- ~ 開頭表示:區(qū)分大小寫的正則匹配。
- ~* 開頭表示:不區(qū)分大小寫的正則匹配。
- !~ 和!~*分別表示:區(qū)分大小寫 不匹配 及不區(qū)分大小寫 不匹配的正則匹配。
- / 表示:通用匹配,任何請(qǐng)求都會(huì)匹配到。
多個(gè)location配置的情況下匹配順序?yàn)椋ㄎ打?yàn)證):
首先匹配 =,其次匹配^~, 其次是按文件中順序的正則匹配,最后是交給 / 通用匹配。當(dāng)有匹配成功時(shí)候,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求。
實(shí)測(cè)
server { listen 80; listen [::]:80; server_name location.test.com; access_log /var/log/nginx/location.host.access.log main; #*********************注意多個(gè)location通常按精確的放前面,模糊大范圍的放后面,nginx先找= ****************************** location = /login.html {#精確匹配 /login root /usr/share/nginx/html/test-equal;#請(qǐng)求/login.html相當(dāng)于尋找資源/usr/share/nginx/html/test-equal/login.html } location ^~ /prefix/ {#區(qū)分大小寫且以/prefix/開頭 root /usr/share/nginx/html/test-prefix;#root代表根目錄,請(qǐng)求/prefix/prefix.html相當(dāng)于尋找資源/usr/share/nginx/html/test-prefix/prefix/prefix.html } location ~ \.(png|jpg)$ {#不區(qū)分大小寫且以.png或.jpg結(jié)尾 root /usr/share/nginx/html/test-suffix;#請(qǐng)求/suffix/a.png相當(dāng)于尋找資源/usr/share/nginx/html/test-suffix/suffix/a.png } location ^~ /jd/ {# 區(qū)分大小寫且以/jd/開頭 proxy_pass https://www.jd.com/;#proxy_pass 此處的url以/結(jié)尾,則nginx會(huì)取掉location部分再轉(zhuǎn)發(fā),例如,請(qǐng)求/jd/電器?name=1 則會(huì)轉(zhuǎn)發(fā)到https://www.jd.com/電器?name=1 } location ^~ /s {# /會(huì)匹配到所有的 proxy_pass https://www.baidu.com;#proxy_pass 此處的url沒(méi)有以/結(jié)尾,則匹配到的地址全部拼接到代理后的地址,例如,請(qǐng)求/s?name=1 則會(huì)轉(zhuǎn)發(fā)到https://www.baidu.com/s?name=1 } location / {# 會(huì)返回index.html root /usr/share/nginx/html; index index.html; } }
備注
location下的root和alias區(qū)別:
例子:
客戶端請(qǐng)求:http://localhost:8080/user/info/a.txt
nginx如果用root配置:nginx會(huì)去尋找資源:/home/html/user/info/a.txt
location ^~ /user {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> root /home/html;#此處可以不以/結(jié)尾 }
nginx如果用alias配置:nginx會(huì)去尋找資源:/home/html/info/a.txt
location ^~ /user {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> alias /home/html/;#此處以/結(jié)尾 }
總結(jié)
到此這篇關(guān)于nginx多l(xiāng)ocation配置的文章就介紹到這了,更多相關(guān)nginx多l(xiāng)ocation配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx的405 not allowed錯(cuò)誤解決方法
本文主要介紹了Nginx的405 not allowed錯(cuò)誤解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Nginx配置的rewrite編寫時(shí)last與break的區(qū)別分析
這篇文章主要介紹了Nginx配置的rewrite編寫時(shí)last與break的區(qū)別分析,簡(jiǎn)單來(lái)說(shuō)使用last會(huì)對(duì)server標(biāo)簽重新發(fā)起請(qǐng)求,而break就直接使用當(dāng)前的location中的數(shù)據(jù)源來(lái)訪問(wèn),需要的朋友可以參考下2016-01-01Nginx/Openresty中啟用http2支持的方法教程
Openresty/Nginx默認(rèn)是不支持http2的,需要將http2模塊編譯進(jìn)應(yīng)用中。這篇文章主要給大家介紹了關(guān)于在Nginx/Openresty中啟用http2支持的方法教程,文中介紹的非常詳細(xì),對(duì)大家具有一的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07Nginx中default_server指令問(wèn)題詳解
nginx 的 default_server 指令可以定義默認(rèn)的 server 出處理一些沒(méi)有成功匹配 server_name 的請(qǐng)求,下面這篇文章主要給大家介紹了關(guān)于Nginx中default_server指令問(wèn)題的相關(guān)資料,需要的朋友可以參考下2022-12-12