Nginx中虛擬服務(wù)器server指令配置說(shuō)明

server

虛擬服務(wù)器配置〔隙可以基于IP配置免猾,也可基于名稱(chēng)配置是辕,二者沒(méi)有明顯的區(qū)分。listen指令描述server接收請(qǐng)求的所有地址和端口猎提,server_name配置客戶(hù)端可以請(qǐng)求到的所有服務(wù)器名稱(chēng)列表获三。

listen

為虛擬服務(wù)器接收請(qǐng)求設(shè)置IP和端口或者UNIX-domain套接字的路徑。

  • 可以同時(shí)指定IP地址和端口锨苏;

  • 也可以只指定IP地址或只指定端口疙教;

  • 只指定IP地址情況,端口默認(rèn)是80伞租;

  • 地址也可以是主機(jī)名(hosts)贞谓;

  • 0.7.36版本開(kāi)始可以通過(guò)中括號(hào)指定IPV6地址;

    listen [::]:8000;
    listen [::1];
    
  • 0.8.21版本開(kāi)始可通過(guò)unix:前綴指定UNIX-domain套接字路徑葵诈;

    listen unix:/var/run/nginx.sock;
    
  • 沒(méi)有顯式配置listen指定的情況下裸弦,如果nginx是以超級(jí)權(quán)限用戶(hù)運(yùn)行的祟同,則默認(rèn)端口是80,否則默認(rèn)是端口是8000理疙。

語(yǔ)法
listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
默認(rèn)值

listen *:80 | *:8000;

parameters列表

default_server

  • 指定當(dāng)前服務(wù)器是指定地址和端口的默認(rèn)服務(wù)器晕城;
  • 如果所以的listen指令都沒(méi)有配置default_server指令,則配置列表中的一個(gè)服務(wù)器為默認(rèn)服務(wù)器窖贤;
  • 0.8.21版本之前default_serverdefault砖顷。

ssl

指定當(dāng)前端口下的所有請(qǐng)求都工作在SSL模式下(從0.7.14版本開(kāi)始起用)。

server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

表示服務(wù)器可以同時(shí)處理HTTP和HTTPS請(qǐng)求赃梧。

http2

配置當(dāng)前端口是接受HTTP/2 請(qǐng)求連接的滤蝠,一般情況下應(yīng)當(dāng)同時(shí)指定ssl參數(shù)(可不指定)。(從1.9.5版本開(kāi)始起用)

spdy

配置當(dāng)前端口是接受SPDY請(qǐng)求鏈接的槽奕,一般情況下應(yīng)當(dāng)同時(shí)指定ssl參數(shù)(可不指定)几睛。(在1.3.15-1.9.4版本中使用)

listen指令還有一些針對(duì)套接字調(diào)用相關(guān)的參數(shù),參考官網(wǎng)指導(dǎo)手冊(cè)

server_name

配置虛擬服務(wù)器的名稱(chēng)列表粤攒。

通過(guò)名稱(chēng)搜索虛擬服務(wù)器時(shí)睬愤,遵循以下規(guī)則:

  1. 確切名稱(chēng)匹配
  2. 以“*”起始的最長(zhǎng)通配符名稱(chēng)匹配
  3. 以“*”結(jié)尾的最長(zhǎng)通配符名稱(chēng)陪陪
  4. 第一個(gè)正則匹配(匹配順序與配置順序有關(guān),匹配到第一個(gè)正則停止)
通配符名稱(chēng)

通配符名稱(chēng)是指在虛擬服務(wù)器名稱(chēng)前面或者后面配置一個(gè)“*”坤塞,緊接著“*”的是點(diǎn)(.)慢味。

“*.example.org”可以匹配到“www.example.org”,也可以匹配到“www.sub.example.org”盔几。

“.example.org”可以當(dāng)做是“example.org”和“*.example.org”的組合晴弃。

類(lèi)似“www.*.example.org”或者“w*.example.org"的配置是無(wú)效的。

正則表達(dá)式名稱(chēng)

正則表達(dá)式配置虛擬服務(wù)器名稱(chēng)需滿(mǎn)足以下條件:

  • 一定要以波浪線(~)作為起始符號(hào)
  • 表達(dá)式放在在(^)和($)之間
  • 正則表達(dá)式中的點(diǎn)(.)需要用反斜杠(\)轉(zhuǎn)義
  • 如果正則表達(dá)式中有花括號(hào)({})逊拍,正則表達(dá)式需要用引號(hào)("")括起來(lái)
server_name  ~^www\d+\.example\.net$;
server_name  "~^(?<name>\w\d{1,3}+)\.example\.net$";
混合名稱(chēng)

如果需要處理請(qǐng)求投中沒(méi)有"Host"字段的請(qǐng)求上鞠,server_name中可以指定空引號(hào)("")。(從0.8.48版本開(kāi)始芯丧,server_name默認(rèn)是""芍阎,之前的版本默認(rèn)是hostname)

也可以指定為具體的IP地址

server {
    listen       80;
    server_name  example.org
                 www.example.org
                 ""
                 192.168.1.1
                 ;
    ...
}

_符號(hào)表示可以匹配所有的名稱(chēng),無(wú)論是正規(guī)域名缨恒,還是形如“!@#”或者“--” 等不正規(guī)的名稱(chēng)皆可匹配谴咸。(這種方式不推薦使用)

server {
    listen       80  default_server;
    server_name  _;
    return       444;
}

可以在server_name指令中通過(guò)使用ASCII (Punycode) 表示國(guó)際化域名(IDNs)

server {
    listen       80;
    server_name  xn--e1afmkfd.xn--80akhbyknj4f;  
    ...
}
最佳實(shí)踐

確切名稱(chēng)、以星號(hào)起始的通配符名稱(chēng)骗露、以星號(hào)結(jié)尾的通配符名稱(chēng)分別存儲(chǔ)在綁定于端口的三張哈希表中岭佳,哈希表搜索順序如前面所述

  1. 確切名稱(chēng)
  2. 以星號(hào)起始的通配符名稱(chēng)
  3. 以星號(hào)結(jié)束的通配符名稱(chēng)
  4. 正則表達(dá)式

搜索速度由快到慢順序

  1. 確切名稱(chēng)
  2. 通配符
  3. 正則表達(dá)式

因此,盡可能的配置確切名稱(chēng)萧锉。比如請(qǐng)求exmaple.orgwww.example.org的頻率較高珊随,那么如下第一種配置明顯優(yōu)于第二種配置

server {
    listen       80;
    server_name  example.org  www.example.org  *.example.org;
    ...
}
server {
    listen       80;
    server_name  .example.org;
    ...
}

如果配置服務(wù)器名稱(chēng)過(guò)多或者長(zhǎng)度過(guò)長(zhǎng),可能需要調(diào)整server_names_hash_max_size
server_names_hash_bucket_size指令柿隙。

location

配置請(qǐng)求URI叶洞。

語(yǔ)法
location [ = | ~ | ~* | ^~ ] uri { ... }

location @name { ... }
默認(rèn)值

-

說(shuō)明
  • 匹配是針對(duì)規(guī)范化URI執(zhí)行的辨赐,對(duì)形如“%XX”的編碼文本會(huì)進(jìn)行解碼操作,對(duì).或者..的相對(duì)路徑引用會(huì)進(jìn)行解析京办,對(duì)相鄰的兩個(gè)或多個(gè)斜杠會(huì)壓縮成一個(gè)掀序;

  • location可以通過(guò)前綴串定義,也可以通過(guò)正則表達(dá)式定義惭婿;

  • 通過(guò)正則表達(dá)式定義時(shí)不恭,~*作為前修飾符表示大小寫(xiě)不敏感,~作為前修飾符表示大小寫(xiě)敏感财饥;

  • 根據(jù)請(qǐng)求匹配location的過(guò)程

    1. 在配置的location列表中搜索URI不帶參數(shù)的最完整字符串换吧,逐漸減短匹配串,最長(zhǎng)的成功匹配將會(huì)被選擇并保存钥星;
    2. 根據(jù)配置順序匹配正則表達(dá)式沾瓦,匹配成功則停止;
    3. 如果正則表達(dá)式匹配成功谦炒,則使用正則表達(dá)式匹配成功的location贯莺,否則使用第一步匹配到的location
  • 前綴匹配中匹配到的最長(zhǎng)location如果有^~作為前修飾符宁改,則不會(huì)進(jìn)行正則匹配缕探;

  • 如果使用=修飾,會(huì)進(jìn)行確切值的匹配还蹲,且匹配成功停止繼續(xù)匹配爹耗;該location不可嵌套其他location

  • 在0.7.1版本到0.8.41版本中谜喊,匹配打的前綴location即使沒(méi)有=或者^~作為前修飾符潭兽,也會(huì)停止匹配;

  • @作為前綴定義的lcation斗遏,不用來(lái)處理常規(guī)請(qǐng)求山卦,而是用來(lái)重定向請(qǐng)求;這種location不能被嵌套最易,也不能其它location怒坯;

  • 如果一個(gè)前綴字符串定義到location以斜杠(/)結(jié)尾炫狱,請(qǐng)求被proxy_pass藻懒,fastcgi_passuwsgi_pass,
    scgi_pass视译,memcached_pass嬉荆,grpc_pass處理,請(qǐng)求會(huì)轉(zhuǎn)向原請(qǐng)求串不帶后斜杠的請(qǐng)求上酷含,301(永久重定向)碼會(huì)返回給帶有后斜杠的請(qǐng)求鄙早⊥艏耄可以通過(guò)下面的方式配置完全匹配來(lái)解決:

    location /user/ {
        proxy_pass http://user.example.com;
    }
    
    location = /user {
        proxy_pass http://login.example.com;
    }
    

其他文章列表

spring web service系列1
spring web service系列2
spring web service系列3
maven配置文件settings.xml詳解
Nginx轉(zhuǎn)發(fā)請(qǐng)求過(guò)程解析
Nginx中的負(fù)載均衡算法
Nginx upstream指令配置說(shuō)明
Nginx中proxy_pass/proxy_redirect/proxy_set_header配置說(shuō)明
Nginx中ngx_http_core_module相關(guān)指令配置說(shuō)明
Java自帶JVM監(jiān)控工具jstat使用詳細(xì)說(shuō)明
Java自帶JVM監(jiān)控工具jps使用詳細(xì)說(shuō)明
Java自帶故障分析工具jmap工具使用說(shuō)明
Java自帶故障分析工具jhat工具使用說(shuō)明

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市限番,隨后出現(xiàn)的幾起案子舱污,更是在濱河造成了極大的恐慌,老刑警劉巖弥虐,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扩灯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡霜瘪,警方通過(guò)查閱死者的電腦和手機(jī)珠插,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颖对,“玉大人捻撑,你說(shuō)我怎么就攤上這事$偷祝” “怎么了顾患?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)个唧。 經(jīng)常有香客問(wèn)我描验,道長(zhǎng),這世上最難降的妖魔是什么坑鱼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任膘流,我火速辦了婚禮,結(jié)果婚禮上鲁沥,老公的妹妹穿的比我還像新娘呼股。我一直安慰自己,他們只是感情好画恰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布彭谁。 她就那樣靜靜地躺著,像睡著了一般允扇。 火紅的嫁衣襯著肌膚如雪缠局。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天考润,我揣著相機(jī)與錄音狭园,去河邊找鬼。 笑死糊治,一個(gè)胖子當(dāng)著我的面吹牛唱矛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绎谦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼管闷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起窃肠,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤包个,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后冤留,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赃蛛,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年搀菩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呕臂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肪跋,死狀恐怖歧蒋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情州既,我是刑警寧澤谜洽,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站吴叶,受9級(jí)特大地震影響阐虚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚌卤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一实束、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逊彭,春花似錦咸灿、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至囊榜,卻和暖如春审胸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卸勺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工砂沛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人孔庭。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓尺上,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親圆到。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怎抛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359