新聞中心
建站服務(wù)器 location匹配規(guī)則 1. 實例
server{
location = \\ {
[配置A]
}
location / {
[配置B]
}
location = /images/ {
[配置C]
}
location ^~ /static/{
[配置D]
}
localtion ~* \\.(gif|jpg|png){
[配置E]
}
}
2. location語法規(guī)則語法:
location = | ~ | ~* | ^~ | @ /url/{ //注意 =、~、~*、^~ 、@是location的匹配規(guī)則,”|“表示或者
“
......省略其他配置
}
規(guī)則說明:
多個location配置的匹配順序:
首先匹配:"=" 其次匹配:"^~" 再匹配:文件location書寫順序 最后把所有請求交給通配符("/")注意:每次匹配成功后,停止匹配,會按照本匹配的location處理請求
按照上面實例進行說明匹配順序:
首先對比第一個location,如果匹配就會停止匹配,并按照配置A進行處理請求:location = \\ {
[配置A]
}
其次對比第二個location,如果匹配就會停止匹配,并按照配置D進行處理請求:
location ^~ /static/{
[配置D]
}
再按照順序依此進行對比,直到找到匹配的才會停止,并按照所匹配的配置*進行處理請求
如果以上無任何匹配項則會選擇通用選項,并按照所匹配的配置B進行處理請求:
location / {
[配置B]
}
3. 應(yīng)用舉例
精準(zhǔn)規(guī)則(=)
location = / {
root /var/ww/html/;
}
此規(guī)則表示只匹配以默認(rèn)地址進行訪問的請求,訪問地址:http://NginxIP/
匹配url路徑(^~)location ^~ /static/ {
root /var/www/html/static;
}
此規(guī)則表示只匹配以" /static/ "開頭的地址進行訪問的請求,訪問地址:https://cache.yisu.com/upload/information/20200214/32/673.jpg | .gif | *.jpg "的文件,訪問地址:https://cache.yisu.com/upload/information/20200214/32/674.jpg
location ~* /Test/ {
root /var/www/html/;
}
此規(guī)則表示匹配url地址中存在Test的訪問請求,不區(qū)分大小寫test也可以,訪問地址:http://NginxIP/test/
區(qū)分大小寫(~)location ~ /Test/{
root /var/www/html/;
}
此規(guī)則表示匹配url地址中存在Test的訪問請求,區(qū)分大小寫,test是進行匹配的,訪問地址:http://NginxIP/Test/
默認(rèn)匹配(所有規(guī)則都可匹配)location / {
root /var/www/html;
}
此規(guī)則為默認(rèn)匹配,他可以匹配所有以默認(rèn)地址訪問的鏈接,訪問地址:http://NginxIP/login.html
內(nèi)部跳轉(zhuǎn)(@)location @index_error{
root /var/www/error/
}
此規(guī)則表示匹配以 "/index/ "開頭的請求,如果鏈接狀態(tài)404,會匹配到這條規(guī)則
rewrite規(guī)則詳解nginx的rewrite功能和apache一樣,rewrite的主要功能是實現(xiàn)RUL地址的重定向。Nginx的rewrite功能是由PCRE軟件支持,rewrite模塊即ngx_http_rewrite_module
模塊。從某種意義上可以說為了美觀或者搜索引起的友好搜索,提高排名等
server{
listen 80;
server_name www.jkyst.xyz jkyst.xyz;
if($host != \'www.jkyst.xyz\' ){
rewrite ^/(.*)$ http://www.jkyst.xyz/$1 permanent;
}
location ~.*\\.(png|gif|jpg){
return 403;
}
}
2.rewrite語法規(guī)則語法:
rewrite regex replacement [flag]
rewrite:rewrite重寫的關(guān)鍵字不可省略
regex:這里寫的是正則表達式
replacement:這里是重新內(nèi)容
flag:這里是最后的flag標(biāo)記
flag標(biāo)記說明:
相關(guān)符號說明:
server{
listen 80;
server_name www.jkyst.xyz jkyst.xyz abc.jkyst.xyz;
if($host != \'www.jkyst.xyz\'){
rewrite ^/(.*)$ http://www,jkyst.xyz/$1 permanent;
}
}
當(dāng)訪問 "abc.jkyst.xyz" 時會自動跳轉(zhuǎn)到 "www.jkyst.xyz",這里出現(xiàn) "if" 語句用于判斷,判斷結(jié)果為true則執(zhí)行語句內(nèi)部的 rewrite重寫
當(dāng)文件不存在時重定向到指定文件server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
}
}
當(dāng)訪問 "test" 目錄下的文件或目錄不存在時,則跳轉(zhuǎn)到 "test1"下面的此文件或者目錄,跳轉(zhuǎn)后會將URL進行轉(zhuǎn)換
server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/(.*)$ index.html last;
}
}
表示當(dāng)訪問 "test" 目錄下的文件或目錄不存在時,則重定向到 "index.html"文件,跳轉(zhuǎn)后URl不會進行轉(zhuǎn)換
server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/([0-9a-z]+)/([0-9a-z]+)/(.*)$ http://www.jkyst.xyz/test/$1$2$3 permanent;
}
}
目錄切換,表示將原目錄轉(zhuǎn)換成其他目錄,【0-9a-z】表示轉(zhuǎn)換后目錄名稱
禁止訪問.sh后綴的文件server{
......其他配置
location ~.*\\.(sh)${
return 405;
}
}
表示當(dāng)訪問 "*.sh"的文件就會返回405錯誤
匹配用戶瀏覽器代理信息server{
listen 80;
server_name www.jkyst.xyz;
if ( $http_user_agent ~* (Android)|(iPhone)){
rewrite ^/test/(.*)$ http://www.jkyst.xyz/test/$1 permanent;
}
}
表示當(dāng)匹配到瀏覽代理為Android和iPhone時進行重定向 "test"目錄下的文件,改變訪問的地址
禁止htaccessserver{
location ~//.ht {
deny all;
}
}
4.文件目錄匹配
舉例說明:
server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
}
}
判斷文件或目錄是否存在
新聞標(biāo)題:nginxlocation匹配及rewrite規(guī)則
本文網(wǎng)址:http://fisionsoft.com.cn/article/chdhsj.html