php的server和location,3、Nginx关于server块和location块的配置
前面第2篇文章中列出了全局段、events段、http段的一些指令的意義和用法,這篇文章將介紹server段和location段的相關指令。
server段配置
listen:
listen指令有三種配置方法:
1、listen address[:port] [ default_server ]? [ ssl ];
2、listen port [ default_server ]? [ ssl ];
3、listen unix:path [ default_server ]? [ ssl ];
使用示例:
listen *:80 | *:8000; ? ###監聽所有80和8000端口
listen 192.168.1.10;###監聽具體IP的所有端口上的連接
listen 8000;###監聽具體端口上的所有IP連接,等同于listen ?*:8000;
server_name:
語法:server_name ?name...;
設置虛擬主機名稱。可以設置多個name,例如:
server_name ?myserver.com www.myserver.com;
name中可以使用通配符*,但是通配符只能用在由三段字符串組成的名稱的首段或尾段,或者由兩段字符串組成的名稱的尾段。例如:
server_name ? *.myserver.com ?www.myserver.*;
name中還可以使用正則表達式,并使用波浪號“~”作為正則表達式字符串的開始標記。例如:
server_name ? ~^www\d+\.myserver\.com$;
表示以匹配www開頭,后面緊跟一個或者多個數字,后面是myserver,并且以com結尾的name
由于server_name指令支持通配符和正則表達式兩種配置名稱的方式,因此在包含有多個虛擬主機的配置文件中,可能會出現一個名稱被多個虛擬主機的server_name匹配成功,那么來自這個名稱的請求到底被哪個虛擬主機處理呢?Nginx會根據以下優先級來選擇虛擬主機響應用戶端的請求:
1、準確匹配server_name
2、通配符開開始時匹配server_name成功
3、通配符在結尾時匹配server_name成功
4、正則表達式匹配server_name成功
5、如果server_name被同一優先級的匹配方式匹配到,則誰先匹配到誰負責響應。
root:
語法:root ?path;
指定根目錄路徑。
示例:
location ?/data/ {
root ?/wwwroot/html;
}
當location接收到“/data/index.html”的訪問請求時,會在/wwwroot/html/data/目錄下找到index.html來響應用戶請求。
index:
設置默認首頁,一般有兩個作用,一是,用戶在發出請求訪問網站時,請求地址可以不寫首頁名稱,二是,可以對一個請求,根據其請求的內容而設置不用的首頁,該指令的語法結構為:
index ?file ...;
示例:server?{
listen?80;
server_name?test;
error_log?/etc/nginx/conf.d/error.log;
root?/wwwroot/html;
index?c.html;
location?/t/?{
root?/wwwroot/html;
index?a.html;
}
}
error_page:
設置網站的錯誤頁面,語法為:
error_page ?code ... [=[response]]uri;
code:要處理的HTTP錯誤代碼
response:將code指定的錯誤代碼轉換為新的錯誤代碼
uri:錯誤頁面的路徑或者網站地址,這個uri是相對于root設置的根路徑而言的。
示例:
error_page ?404 ?/404.html;
基于IP的訪問控制:
allow? address | CIDR | unix |all;
設置允許訪問的IP范圍
deny ?address | CIDR | unix:| all;
設置拒絕訪問的IP范圍
示例:location?/t/?{
root?/data/www/vhost2/;
allow?172.16.100.120;
deny?all;
}
僅允許172.16.100.120這個IP地址訪問
基于賬戶密碼訪問Nginx服務器
auth_basic string | off;
是否啟用密碼認證
auth_basic_user_file? file;
指定密碼認證的配置文件路徑,只有在auth_basic啟用時有效。
示例:創建一個server.conf的配置文件,并設置基于賬號密碼訪問該server中配置的虛擬主機
1、先創建server.conf的配置文件
#cd /etc/nginx/conf.d/
#vim server.confserver?{
listen?8888;
server_name?test;
root?/wwwroot/html;
location?/t/?{
auth_basic?"Admin?Area";
auth_basic_user_file??/etc/nginx/.ngxpasswd;
}
}
2、創建賬號密碼文件,需要安裝httpd
#htpasswd -c -m /etc/nginx/.ngxpasswd tom
創建密碼文件,路徑為/etc/nginx/.ngxpasswd ?并創建一個tom的賬號,命令會提示輸入密碼
#htpasswd? -m /etc/nginx/.ngxpasswd jerry
再創建一個名為Jerry的賬號,創建第二個賬號時不用-c選項
3、測試訪問網站
stub_status:
通過制定的uri輸出stub_status,只能定義在server和location中。
示例:server?{
listen?8889;
server_name?test;
root?/wwwroot/html;
location?/t/?{
stub_status;
}
}
當前活動客戶端連接數包括waiting狀態的客戶端
accepts:已接受的客戶端連接總數量
handled : 已處理的客戶端連接數量
requests: 客戶端總請求數量
reading:當前nginx正在讀取客戶端請求報文的連接數量數量
writing:正在響應客戶端請求報文的連接數量
waiting:等待其發出請求的空閑連接數量
location段配置:
注意,location段只能在server段中配置,前面的文章有講過。
其配置結構為:server?{
...
location?[PATTERN]?{
...
}
location?[PATTERN]?{
...
}
}
location的語法結構為:
location [ = | ~ | ~* | ^~ ] uri { ...}
其中uri變量是帶匹配的請求字符串,可以是不含正則表達式的字符串,如/myserver.php等。也可以是含有正則表達式的字符串,如\.php$(表示以.php結尾的URL)。不含正則表達式的uri稱為標準uri,含有正則表達式的uri稱為正則uri。
方括號中的都是可選項,用來改變請求字符串與uri的匹配方式。在介紹這幾個標識的含義之前,先說說Nginx服務器是如何在sever塊中所有location塊的uri和請求的字符串匹配的:
在不添加此選項之前,Nginx服務器首先在server塊的多個location中搜索是否有標準uri和請求的字符串匹配,如果有多個匹配,就記錄匹配度最高的一個。然后在用location塊中的正則uri和請求的字符串匹配,當第一個正則uri匹配成功時,結束搜索,并使用這個location塊處理處理此請求。如果正則匹配全部失敗,則使用剛才記錄的匹配度最高的location塊來處理請求
“=”:用于標準uri前,要求請求字符串與uri嚴格匹配,如果匹配成功則立即停止向下所有并立即處理此請求。
“~”:用于表示uri包含正則表達式,并且區分大小寫
“~*”:用于表示uri包含正則表達式,并且不區分大小寫
“^~”:用于標準uri前,要求Nginx服務器找到標識uri和請求字符串匹配度最高的location后,立即使用此location處理請求,而不再使用location塊中的正則uri和請求字符串做匹配。
匹配優先級:精確匹配“=” > “^~” > “~”或者~*> 不帶符號的URL
location段的配置指令:
root:
指定根目錄,語法為:root ?path;
該指令也還能用于http段和server段中。
示例:
location ?/data/ {
root ?/locationtest1;
}
當location塊接收到“/data/index.htm”的請求時,將在/locationtest1/data/目錄下找到index.htm來響應請求。
alias:
定義路徑別名。語法:alias ?path;
注意,這里的path是修改后的根路徑,而不是相對于root 的路徑
示例:server?{
listen?80;
server_name?test;
error_log?/etc/nginx/conf.d/error.log;
root?/wwwroot/html;
index?c.html;
location?/abc/?{
alias?/wwwroot/html/data/zeng/;
}
}
當用戶請求test/abc/index.html時,Nginx將從/wwwroot/html/data/zeng/目錄中找到index.html來響應請求。
index:
設置默認主頁,和在server段中的用法一樣,不再作說明。
總結
以上是生活随笔為你收集整理的php的server和location,3、Nginx关于server块和location块的配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公主连结前排坦克怎么选择
- 下一篇: oracle简版如何打开,如何打开和关闭