国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【nginx運(yùn)維基礎(chǔ)(5)】Nginx的location攻略

FrancisSoung / 3358人閱讀

摘要:概述有定位的意思根據(jù)來進(jìn)行不同的定位在虛擬主機(jī)的配置中是必不可少的可以把網(wǎng)站的不同部分定位到不同的處理方式上偽靜態(tài)反向代理負(fù)載均衡等等都離不開語法中括號(hào)可以不寫任何參數(shù)此時(shí)稱為一般匹配也可以寫參數(shù)因此大類型可以分為種精準(zhǔn)匹配一般匹配正則匹配

概述

location 有"定位"的意思, 根據(jù)Uri來進(jìn)行不同的定位.
在虛擬主機(jī)的配置中,是必不可少的,location可以把網(wǎng)站的不同部分,定位到不同的處理方式上.偽靜態(tài),反向代理,負(fù)載均衡等等都離不開location.

語法
location [=|~|~*|^~] patt {}

中括號(hào)可以不寫任何參數(shù),此時(shí)稱為一般匹配,也可以寫參數(shù).因此,大類型可以分為3種:

location = patt {} [精準(zhǔn)匹配]
location patt{}  [一般匹配]
location ~ patt{} [正則匹配]
匹配說明 精準(zhǔn)匹配 =

完全匹配指定的 pattern ,且這里的 pattern 被限制成簡單的字符串,也就是說這里不能使用正則表達(dá)式.

server {
    server_name website.com;
    location = /abcd {
    […]
    }
}

http://website.com/abcd        # 正好完全匹配
http://website.com/ABCD        # 如果運(yùn)行 Nginx server 的系統(tǒng)本身對(duì)大小寫不敏感,比如 Windows ,那么也匹配
http://website.com/abcd?param1    # 忽略查詢串參數(shù)(query string arguments),也同樣匹配
http://website.com/abcd/    # 不匹配,因?yàn)槟┪泊嬖诜葱备埽╰railing slash),Nginx 不認(rèn)為這種情況是完全匹配
http://website.com/abcde    # 不匹配,因?yàn)椴皇峭耆ヅ?
一般匹配 (None)

可以理解為左前綴匹配(like pattern%),這種情況下,匹配那些以指定的 patern 開頭的 URI,注意這里的 URI 只能是普通字符串,不能使用正則表達(dá)式.

server {
    server_name website.com;
    location /abcd {
    […]
    }
}

http://website.com/abcd        # 正好完全匹配
http://website.com/ABCD        # 如果運(yùn)行 Nginx server 的系統(tǒng)本身對(duì)大小寫不敏感,比如 Windows ,那么也匹配
http://website.com/abcd?param1     # 忽略查詢串參數(shù)(query string arguments),這里就是 /abcd 后面的 ?param1
http://website.com/abcd/    # 末尾存在反斜杠(trailing slash)也屬于匹配范圍內(nèi)
http://website.com/abcde    # 仍然匹配,因?yàn)?URI 是以 pattern 開頭的
正則匹配 ~

對(duì)大小寫敏感(在window上無效),且 pattern 須是正則表達(dá)式

server {
    server_name website.com;
    location ~ ^/abcd$ {
    […]
    }
}


http://website.com/abcd        # 完全匹配

http://website.com/ABCD        # 不匹配,~ 對(duì)大小寫是敏感的

http://website.com/abcd?param1     # 忽略查詢串參數(shù)(query string arguments),這里就是 /abcd 后面的 ?param1 

http://website.com/abcd/    # 不匹配,因?yàn)槟┪泊嬖诜葱备埽╰railing slash),并不匹配正則表達(dá)式 ^/abcd$

http://website.com/abcde    # 不匹配正則表達(dá)式 ^/abcd$
正則匹配 ~*

不區(qū)分大小寫,pattern 須是正則表達(dá)式

server {
    server_name website.com;
    location ~* ^/abcd$ {
    […]
    }
}

http://website.com/abcd        # 完全匹配

http://website.com/ABCD        # 匹配,這就是它不區(qū)分大小寫的特性

http://website.com/abcd?param1     # 忽略查詢串參數(shù)(query string arguments),這里就是 /abcd 后面的 ?param1 

http://website.com/abcd/    # 不匹配,因?yàn)槟┪泊嬖诜葱备埽╰railing slash),并不匹配正則表達(dá)式 ^/abcd$

http://website.com/abcde    # 不匹配正則表達(dá)式 ^/abcd$
正則匹配 ^~

匹配情況類似一般匹配,以指定匹配模式開頭的 URI 被匹配

!~和!~*

分別為區(qū)分大小寫不匹配及不區(qū)分大小寫不匹配的正則

通用匹配 /

任何請(qǐng)求都會(huì)匹配到.

特殊匹配 @

用于定義一個(gè) Location 塊,且該塊不能被外部 Client 所訪問,只能被 Nginx 內(nèi)部配置指令所訪問,比如 try_files or error_page

匹配優(yōu)先級(jí)

http://www.test.com/ 從域名后面(uri:http請(qǐng)求行的第二列)開始匹配,也就是/,匹配原則一般都是左前綴匹配,location / {} 能夠匹配所有HTTP 請(qǐng)求,因?yàn)槿魏蜨TTP 請(qǐng)求都必然是以"/"開始的,但是,正則location 和其他任何比"/"更長的普通location (location / {} 是普通location 里面最短的,因此其他任何普通location 都會(huì)比它更長,當(dāng)然location = / {} 和 location ^~ / {} 是一樣長的)會(huì)優(yōu)先匹,由此可見匹配的優(yōu)先級(jí)可以總結(jié)為:

越詳細(xì)就越優(yōu)先

是不是有點(diǎn)像css的選擇器?

Example1

# 首先看有沒有精準(zhǔn)匹配,如果有,則停止匹配過程.
location = patt {
  config A
}
location / {
  root   /usr/local/nginx/html;
  index  index.html index.htm;
}

如果訪問http://test.com/
定位流程是 
1: 精準(zhǔn)匹配中"/" ,得到index頁為index.htm
2: 再次訪問 /index.htm , 此次內(nèi)部轉(zhuǎn)跳uri已經(jīng)是"/index.htm",根目錄為/usr/local/nginx/html
3: 最終結(jié)果,訪問了 /usr/local/nginx/html/index.htm

Example2

location / {
   root   /usr/local/nginx/html;
   index  index.html index.htm;
}

location /foo {
    root /var/www/html;
    index index.html;
}

我們?cè)L問 http://test.com/foo
對(duì)于uri "/foo", 兩個(gè)location的patt,都能匹配他們
即 "/"能從左前綴匹配 "/foo", "/foo"也能左前綴匹配"/foo",
此時(shí), 真正訪問 /var/www/html/index.html
原因:"/foo"匹配的更長,因此使用之;

Example3

location ~ image {
    root /var/www/image;
    index index.html;
}

如果我們?cè)L問 http://test.com/image/logo.png
此時(shí), "/" 與"/image/logo.png" 匹配
同時(shí),"image"正則 與"image/logo.png"也能匹配,誰發(fā)揮作用?
正則表達(dá)式的成果將會(huì)使用.因?yàn)榇藭r(shí)的正則表達(dá)式更詳細(xì)
圖片真正會(huì)訪問 /var/www/image/logo.png

再次總結(jié)優(yōu)先級(jí)序如下:

1. =
2. (None)    前提是 pattern 完全匹配 URI 的情況(不是只匹配 URI 的頭部,這點(diǎn)很重要)
3. ^~
4. ~ 或 ~*
5. (None) pattern 匹配 URI 的頭部

貌似與location的書寫順序無關(guān)? 但實(shí)際上還是有關(guān)系的

# 配置一
server {

 listen       9090;
 server_name  localhost;

 location ~ .html$ {
     allow all; 
 }  

 location ~ ^/prefix/.*.html$ {
     deny all;  
 }  

}


# 配置二
server {

   listen       9090;
   server_name  localhost;

   location ~ ^/prefix/.*.html$ {
       deny all;  
   }  

  location ~ .html$ {
       allow all; 
   } 
}
URI 請(qǐng)求 配置一 配置二
curl http://localhost:9090/regextest.html 404 Not Found 404 Not Found
curl http://localhost:9090/prefix/regextest.html 404 Not Found 403 Forbidden

Location ~ ^/prefix/.*.html$ {deny all;} 表示正則 location 對(duì)于以 /prefix/ 開頭, .html 結(jié)尾的所有 URI 請(qǐng)求,都拒絕訪問; location ~.html${allow all;} 表示正則 location 對(duì)于以 .html 結(jié)尾的 URI 請(qǐng)求,都允許訪問. 實(shí)際上,prefix 的是 ~.html$ 的子集.

在"配置一 "下,兩個(gè)請(qǐng)求都匹配上 location ~.html$ {allow all;} ,并且停止后面的搜索,于是都允許訪問, 404 Not Found ;在"配置二 "下, /regextest.html 無法匹配 prefix ,于是繼續(xù)搜索 ~.html$ ,允許訪問,于是 404 Not Found ;然而 /prefix/regextest.html 匹配到 prefix ,于是 deny all , 403 Forbidden .

優(yōu)先級(jí)最終總結(jié)
1. =
2. (None)    前提是 pattern 完全匹配 URI 的情況(不是只匹配 URI 的頭部,這點(diǎn)很重要)
3. ^~
4. ~ 或 ~*
5. (None) pattern 匹配 URI 的頭部

越詳細(xì)就越優(yōu)先,但是同優(yōu)先級(jí)的情況下,按書寫順序誰先出現(xiàn)就以誰為準(zhǔn)(就近原則)

依然和css選擇器的優(yōu)先級(jí)很像...
root&alias文件路徑配置

http://www.ttlsa.com/nginx/ng...

推薦必須的location
#直接匹配網(wǎng)站根,通過域名訪問網(wǎng)站首頁比較頻繁,使用這個(gè)會(huì)加速處理,官網(wǎng)如是說.
#這里是直接轉(zhuǎn)發(fā)給后端應(yīng)用服務(wù)器了,也可以是一個(gè)靜態(tài)首頁
# 第一個(gè)必選規(guī)則
location = / {
    proxy_pass http://127.0.0.1:88; 
}

# 第二個(gè)必選規(guī)則是處理靜態(tài)文件請(qǐng)求,這是nginx作為http服務(wù)器的強(qiáng)項(xiàng)
# 有兩種配置模式,目錄匹配或后綴匹配,任選其一或搭配使用
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
}

location ~ .*.(js|css)?$
{
    expires      12h;
}

location ~ /.  
{
    deny all; # 其他的任意后綴都不讓其訪問;
}

#第三個(gè)規(guī)則就是通用規(guī)則,用來轉(zhuǎn)發(fā)動(dòng)態(tài)請(qǐng)求到后端應(yīng)用服務(wù)器
location /
{
    try_files $uri @apache; #try_files 將嘗試你列出的文件并設(shè)置內(nèi)部文件指向
}

location @apache
{
    internal; # internal指令指定某個(gè)location只能被“內(nèi)部的”請(qǐng)求調(diào)用,外部的調(diào)用請(qǐng)求會(huì)返回”Not found”
    proxy_pass http://127.0.0.1:88;
    
    proxy_connect_timeout 300s;
    proxy_send_timeout   900;
    proxy_read_timeout   900;
    proxy_buffer_size    32k;
    proxy_buffers     4 32k;
    proxy_busy_buffers_size 64k;
    proxy_redirect     off;
    proxy_hide_header  Vary;
    proxy_set_header   Accept-Encoding "";
    proxy_set_header   Host   $host;
    proxy_set_header   Referer $http_referer;
    proxy_set_header   Cookie $http_cookie;
    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40469.html

相關(guān)文章

  • nginx反向代理與微信測(cè)試全攻略

    摘要:傳給微信的參數(shù)進(jìn)行轉(zhuǎn)義其中參數(shù)是可以被微信原樣返回,這樣就可以按你自己的需求完成反向代理了。可以去掉搭建測(cè)試環(huán)境另一條運(yùn)維的原則是不要在生產(chǎn)環(huán)境上直接改,在測(cè)試環(huán)境修改并經(jīng)過測(cè)試,測(cè)試通過后,再上傳到生產(chǎn)環(huán)境。 前言 在與第三方系統(tǒng)進(jìn)行接口開發(fā)時(shí),需要不斷的改進(jìn)和測(cè)試,以常見的微信登錄支付和 Alipay 支付和登錄為例. 相對(duì)來講 Alipay 做起來容易一些, 一是接口 SDK 封...

    endless_road 評(píng)論0 收藏0
  • Angular2 網(wǎng)站 SEO 攻略

    摘要:使用生成靜態(tài)頁,再配置在爬蟲訪問時(shí)提供靜態(tài)頁中的內(nèi)容。如何在爬蟲訪問時(shí)讓爬蟲獲取到靜態(tài)頁中的內(nèi)容要演練此部分內(nèi)容,首先你要把網(wǎng)站用部署。 Angular 的優(yōu)點(diǎn)有很多,但如果用它來開發(fā)網(wǎng)站的話,就不得不面對(duì)它的兩大缺點(diǎn): 首頁加載慢 搜索引擎的爬蟲獲取不到頁面內(nèi)容 由于 Angular 是通過 js 動(dòng)態(tài)生成 dom 并插入到頁面中,搜索引擎默認(rèn)只能獲得頁面的標(biāo)題。我們可以使用 c...

    niuxiaowei111 評(píng)論0 收藏0
  • nginx運(yùn)維基礎(chǔ)(2)】Nginx配置文件說明及虛擬主機(jī)配置示例

    摘要:配置文件說明定義運(yùn)行的用戶和用戶組進(jìn)程數(shù),建議設(shè)置為當(dāng)前主機(jī)的總核心數(shù)。注站點(diǎn)目錄和域名盡量一樣,養(yǎng)成一個(gè)好習(xí)慣基于端口的虛擬主機(jī)配置邏輯運(yùn)算的配置中不支持條件的邏輯中包含或的運(yùn)算,而且不支持的嵌套語法,否則會(huì)報(bào)下面的錯(cuò)誤。 配置文件說明 #定義Nginx運(yùn)行的用戶和用戶組 user www www; #nginx進(jìn)程數(shù),建議設(shè)置為當(dāng)前主機(jī)的CPU總核心數(shù)。 worker_proc...

    BoYang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

FrancisSoung

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<