nginx?80端口配置多個location無效訪問404問題
nginx 80端口配置多個location無效 訪問404
文件目錄

nginx配置

一直感覺配置沒啥問題,但是實際訪問一直報404,很納悶,百度了下發(fā)現又是一個知識盲區(qū):
alias與root的用法區(qū)別 alias實現虛擬目錄
最基本的區(qū)別
alias指定的目錄是準確的。
root是指定目錄的上級目錄,并且該上級目錄要含有l(wèi)ocation指定名稱的同名目錄。
一般情況下,在nginx配置中的良好習慣是:
- 1)在location /中配置root目錄;
- 2)在location /path中配置alias虛擬目錄。
root與alias主要區(qū)別在于nginx如何解釋location后面的uri,這會使兩者分別以不同的方式將請求映射到服務器文件上。
root的處理結果是:root路徑+location路徑
配置為root html/manager,實際訪問www.xxx.com/manager時,處理結果為:
"www.xxx.com/manager" + "/manager" = "www.xxx.com/manager/manager"
因此,一直報404錯誤!
alias的處理結果是:使用alias路徑替換location路徑
處理結果即為 www.xxx.com/manager,因此能訪問到。
所以,html/manager目錄結構的正確nginx配置應該為(使用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虛擬機作為服務器 | |
| 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ā)現配置不起作用,限制的ip仍舊可以訪問,location配置如下
location ~ ^/admin.html {
root /opt/app/code;
allow all;
deny 192.168.136.1;
index index.html index.htm;
}配置完成后,發(fā)現使用192.168.136.1主機仍然可以訪問,如下圖

解決
查看官網可知
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ī)則,直至找到第一個匹配項,也就是說如果匹配第一個,就不會再往后面找了
經測試發(fā)現,allow或者deny中有指定限制具體ip的放在上面即可,如上解決配置
location ~ ^/admin.html {
root /opt/app/code;
deny 192.168.136.1;
allow all;
index index.html index.htm;
}如果配置的只允許某ip訪問,如果無法限制,也是同樣的問題。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
國內一些常用PHP的CMS的Nginx服務器的偽靜態(tài)規(guī)則整理
當我們從apache服務器轉向Nginx服務器的時候,它們的偽靜態(tài)規(guī)則就不一樣了,所以你熟悉Nginx服務器的偽靜態(tài)規(guī)則,自己寫當然也好2011-03-03
Nginx中動態(tài)upstream域名解析失效問題解決的幾種方法
本文主要介紹了Nginx中實現動態(tài)解析upstream域名的方法,強調了使用resolver指令與變量觸發(fā)、作用域正確、配置兼容三要素的重要性,并提供了四種解決方案,下面就來詳細的介紹一下2026-04-04
使用nginx同域名下部署多個vue項目并使用反向代理的方法
這篇文章主要介紹了使用nginx同域名下部署多個vue項目并使用反向代理的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02

