nginx?80端口配置多個location無效訪問404問題
nginx 80端口配置多個location無效 訪問404
文件目錄
nginx配置
一直感覺配置沒啥問題,但是實際訪問一直報404,很納悶,百度了下發(fā)現(xiàn)又是一個知識盲區(qū):
alias與root的用法區(qū)別 alias實現(xiàn)虛擬目錄
最基本的區(qū)別
alias指定的目錄是準(zhǔn)確的。
root是指定目錄的上級目錄,并且該上級目錄要含有l(wèi)ocation指定名稱的同名目錄。
一般情況下,在nginx配置中的良好習(xí)慣是:
- 1)在location /中配置root目錄;
- 2)在location /path中配置alias虛擬目錄。
root與alias主要區(qū)別在于nginx如何解釋location后面的uri,這會使兩者分別以不同的方式將請求映射到服務(wù)器文件上。
root的處理結(jié)果是:root路徑+location路徑
配置為root html/manager,實際訪問www.xxx.com/manager時,處理結(jié)果為:
"www.xxx.com/manager" + "/manager" = "www.xxx.com/manager/manager"
因此,一直報404錯誤!
alias的處理結(jié)果是:使用alias路徑替換location路徑
處理結(jié)果即為 www.xxx.com/manager,因此能訪問到。
所以,html/manager目錄結(jié)構(gòu)的正確nginx配置應(yīng)該為(使用alias):
或(使用root):
nginx在location配置訪問控制不起作用
環(huán)境描述
nginx | nginx/1.12.2 |
涉及nginx模塊 | --without-http_access_module |
linux | CentOS Linux release 7.6.1810 (Core) |
使用vmware虛擬機作為服務(wù)器 |
Syntax: | allow address | CIDR | unix: | all; |
---|---|
Default: | — |
Context: | http, server, location, limit_except |
Syntax: | deny address | CIDR | unix: | all; |
---|---|
Default: | — |
Context: | http, server, location, limit_except |
問題描述
在配置nginx限制ip訪問時發(fā)現(xiàn)配置不起作用,限制的ip仍舊可以訪問,location配置如下
location ~ ^/admin.html { root /opt/app/code; allow all; deny 192.168.136.1; index index.html index.htm; }
配置完成后,發(fā)現(xiàn)使用192.168.136.1主機仍然可以訪問,如下圖
解決
查看官網(wǎng)可知
The rules are checked in sequence until the first match is found. In this example, access is allowed only for IPv4 networks 10.1.1.0/16 and 192.168.1.0/24 excluding the address 192.168.1.1, and for IPv6 network 2001:0db8::/32. In case of a lot of rules, the use of the ngx_http_geo_module module variables is preferable.
他會依次檢查規(guī)則,直至找到第一個匹配項,也就是說如果匹配第一個,就不會再往后面找了
經(jīng)測試發(fā)現(xiàn),allow或者deny中有指定限制具體ip的放在上面即可,如上解決配置
location ~ ^/admin.html { root /opt/app/code; deny 192.168.136.1; allow all; index index.html index.htm; }
如果配置的只允許某ip訪問,如果無法限制,也是同樣的問題。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx 實現(xiàn) TCP/DUP流量按 IP 動態(tài)轉(zhuǎn)發(fā)操作方法
為優(yōu)化網(wǎng)絡(luò)性能和提升服務(wù)可用性,通過Nginx配置stream模塊根據(jù)客戶端IP地址動態(tài)轉(zhuǎn)發(fā)TCP請求至不同后端服務(wù)器節(jié)點,適用于數(shù)據(jù)庫代理、TCP服務(wù)負(fù)載均衡及地域或來源IP分流的流量調(diào)度等場景,本文給大家介紹Nginx 實現(xiàn) TCP/DUP流量按 IP 動態(tài)轉(zhuǎn)發(fā)的操作2024-10-10Nginx生產(chǎn)環(huán)境平滑升級的實現(xiàn)
本文主要介紹了Nginx生產(chǎn)環(huán)境平滑升級的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Nginx結(jié)合keepalived實現(xiàn)雙機熱備方案
Nginx難免遇見故障,可以使用使用keepalived來實現(xiàn)Nginx的高可用,本文主要介紹了Nginx結(jié)合keepalived實現(xiàn)雙機熱備方案,具有一定的參考價值,感興趣的可以了解一下2024-05-05