配置講解

nginx.conf配置文件內(nèi)容

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80     default_server;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

main全局配置

直接放到 nginx.conf頂層 配置文件的下面的上下文是 main ,這些配置會影響到整個服務(wù)器

1. user lotus

user 是指令的名字,這個指令可以設(shè)置系統(tǒng)運行 nginx 時候用的用戶名概作,這里設(shè)置成了lotus 這個用戶

2. worker_processes 1

worker_processes 指令設(shè)置了 nginx 同時運行的進程數(shù),或者叫 nginx 的實例默怨。

nginx 有一個 master 進程讯榕,還有一些 worker 進程。

master 進程的主要工作是讀取和鑒定配置匙睹,維護 worker 進程愚屁。 真正提供服務(wù)的是 worker 進程。

nginx 用了一種有效的方式痕檬,把請求分布到不同的 worker 進程上去處理

worker_processes 指令設(shè)置的就是這個 woker 進程的數(shù)量霎槐,這個數(shù)量可以根據(jù)服務(wù)器的 CPU 核心數(shù)來設(shè)定, 8 核的 CPU 就設(shè)置成 8 個 worker 進程

3. error_log logs/error.log

error_log 指令設(shè)置了錯誤日志存放的位置

4. pid logs/nginx.pid

pid 指令設(shè)置了 nginx 的 master 進程 ID(PID) 寫入的位置梦谜,操作系統(tǒng)會用到這個 PID 跟蹤還有發(fā)送信號給 nginx 的進程


events配置

1. worker_connections 1024

上面這塊配置用到了一組大括號丘跌,上下文是 events

里面用了一個 worker_connections 指令袭景, 它可以設(shè)置每個 woker 進程同時能為多少個連接提供服務(wù)。

它的值設(shè)置成多少闭树,需要多在服務(wù)器上實踐耸棒, 一般你可以用 CPU 核心數(shù) * 1024 ,得到的結(jié)果設(shè)置成 worker_connections 的參數(shù)值


http配置

一般我們對服務(wù)器的設(shè)置都放到這個區(qū)塊里面

http 配置區(qū)塊里面會包含 server 配置區(qū)塊报辱, 我們可以定義多個 server 區(qū)塊榆纽,去配置不同的服務(wù)器,也就是虛擬主機捏肢。

server 配置區(qū)塊下面又會包含 多個location 區(qū)塊奈籽, 這些區(qū)塊可以設(shè)置匹配不同的請求,根據(jù)請求的地址鸵赫,提供不同的服務(wù)衣屏,有些請求直接給它們靜態(tài)文件,有些請求可能要交給其它的服務(wù)器處理辩棒, 比如 FastCGI 服務(wù)器狼忱。

1. include mime.types

這里用了一個 include 指令,把 mime.types 這個文件的內(nèi)容加載進來一睁, 在這個文件里定義了 MIME type 钻弄, MIME type 告訴瀏覽器,怎么樣去處理不同類型的文件

2. access_log logs/access.log main;

access_log 指令設(shè)置了訪問的日志存儲的位置者吁,在 server 和 location 區(qū)塊里也可以使用這個指令

3. index index.html index.htm

index 指令設(shè)置了當(dāng)請求的地址里不包含特定的文件的時候窘俺,默認(rèn)打開的文件

這里設(shè)置成了 index.html index.htm , 如果目錄下面有 index.html 就打開它复凳,如果沒有就去找 index.htm瘤泪,還沒有就返回 404 錯誤。

4. include /usr/local/nginx/conf/conf.d/*.conf

nclude 指令可以把其它的文件包含進來育八,這樣可以保持配置文件的整潔对途。

這里包含的是 /usr/local/nginx/conf/conf.d/*.conf, *.conf 表示所有的帶 .conf 后綴的文件髓棋。

也就是我們可以把自己的配置放到 /usr/local/nginx/conf/conf.d/ 這個目錄的下面实檀, 只要文件的后綴是 .conf ,這些配置文件都會起作用按声。


server配置

這種類型的配置區(qū)塊里可以配置不同的服務(wù)器膳犹。 就是每個 server 區(qū)塊都可以定義一臺虛擬主機。

如果你想在一臺服務(wù)器上運行多個網(wǎng)站的話儒喊,就會用到這種配置區(qū)塊镣奋。

一般每個 server 區(qū)塊的配置都可以放到單獨文件里

1. listen 80 default_server

listen 指令可以設(shè)置服務(wù)器監(jiān)聽的端口號怀愧,還有 IP 地址或者主機名侨颈,這里監(jiān)聽了 80 端口,這是 http 協(xié)議默認(rèn)的端口號芯义。

default_server的意思是哈垢,在 80 端口的請求,如果不匹配在其它地方配置的虛擬主機扛拨, 就會默認(rèn)使用這個服務(wù)器(default_server)

在監(jiān)聽的端口前面可以加上 IP 地址或許本地的主機名耘分, 像這樣:127.0.0.1:80 ,localhost:80绑警,42.120.40.68:80 …

2. server_name localhost;

server_name求泰,這個指令可以創(chuàng)建基于主機名的虛擬主機。

比如我的域名是 xiongneng.cc 计盒, 我又為這個域名添加了一些主機名渴频,www.xiongneng.ccblog.xiongneng.cc北启,talk.xiongneng.cc 等等卜朗。 我想讓用戶在訪問這些主機名的時候,打開不同的網(wǎng)站咕村。

這就可以去創(chuàng)建多個 server 配置區(qū)塊场钉, 每個區(qū)塊里用 server_name 去指定這個虛擬主機的主機名,用戶在訪問這個主機名的時候懈涛, nginx 會根據(jù)請求的頭部上的信息來決定用哪個虛擬主機為用戶提供服務(wù)逛万。下面是一些參考例子:

server_name xiongneng.cc;

nginx 會處理用戶對 xiongneng.cc 的請求

server_name xiongneng.cc www.xiongneng.cc;

nginx 會處理對 xiongneng.cc 還有 www.xiongneng.cc 的請求

server_name *.xiongneng.cc;

nginx 會處理所有的對 xiongneng.cc 子域名的請求

3. root /usr/local/nginx/html;

root 指令配置了這個虛擬主機的根目錄。

之前安裝好 nginx批钠,在瀏覽器里打開服務(wù)器的 IP 地址泣港,看到的測試頁面,就在這個目錄的下面价匠。


location配置

location 配置區(qū)塊會定義在 server 配置區(qū)塊里邊兒当纱。

它可以配置 nginx 怎么樣響應(yīng)請求的資源

server_name 指令告訴 nginx 怎么樣處理對域名的請求,location 指令設(shè)置的是對特定的文件還有目錄的請求踩窖。

1. root html

nginx 下的 html 文件夾作為根目錄, html 里的文件是開放的, 可以被訪問到的, 而 html 外面的則不可以

2. index index.html index.htm

指的是如果訪問路徑, 那就訪問嘗試匹配 index.html 或 index.htm

每個 server 區(qū)塊里面可以定義多個 location 區(qū)塊坡氯,分別去配置對不同目錄或者文件的請求應(yīng)該怎么樣響應(yīng)。

下面再看幾個 location 的配置例子:

location ~ .(gif|jpg|png)$ { ... }

上面的 location 后面是一個 ~ 號洋腮,表示它的后面是一個正則表示式箫柳。

這里的意思是, 請求的是服務(wù)器里的 .gif 啥供,.jpg悯恍,或者 .png 格式的文件,具體怎么處理伙狐,可以放到它后面的大括號里

注意這個匹配是區(qū)分大小寫的涮毫,如果請求的是 .GIF 瞬欧,這個請求就不匹配這個 location 的配置

如果想不區(qū)分大小寫,在 ~ 后面罢防,加上一個 * 號:

location ~* .(gif|jpg|png)$ { ... }

location 定義匹配泌绣,更具體的那個會勝出楷怒,比如一個是 / ,另一個是 /blog ,這樣就會用 /blog 這個 location 甥角。

你可以使用 ^~ 爹梁,讓 nginx 停止查找更具體的匹配腹躁,意思就是纱皆,如果有請求匹配這個 location , 就直接用它里面的配置绽昼,不要再繼續(xù)查找別的 location 設(shè)置的匹配了唯鸭。

location ^~ /blog/ { ... }

精確的匹配,可以用一個 = 號:
location = / { ... }

3. 關(guān)于匹配

匹配總結(jié)如下:

= 開頭:表示精確匹配

^~ 開頭:讓 nginx 停止查找更具體的匹配

~ 開頭:表示區(qū)分大小寫的正則匹配;

~* 開頭:表示不區(qū)分大小寫的正則匹配

/ 通用匹配, 如果沒有其它匹配,任何請求都會匹配到

順序 no優(yōu)先級:
(location =) > (location 完整路徑) > (location ^~ 路徑) > (location /* 正則順序) > (location 部分起始路徑) > (/)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绪励,一起剝皮案震驚了整個濱河市肿孵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疏魏,老刑警劉巖停做,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異大莫,居然都是意外死亡蛉腌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門只厘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烙丛,“玉大人,你說我怎么就攤上這事羔味『友剩” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵赋元,是天一觀的道長忘蟹。 經(jīng)常有香客問我,道長搁凸,這世上最難降的妖魔是什么媚值? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮护糖,結(jié)果婚禮上褥芒,老公的妹妹穿的比我還像新娘。我一直安慰自己嫡良,他們只是感情好锰扶,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布献酗。 她就那樣靜靜地躺著,像睡著了一般少辣。 火紅的嫁衣襯著肌膚如雪凌摄。 梳的紋絲不亂的頭發(fā)上羡蛾,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天漓帅,我揣著相機與錄音,去河邊找鬼痴怨。 笑死忙干,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浪藻。 我是一名探鬼主播捐迫,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爱葵!你這毒婦竟也來了施戴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萌丈,失蹤者是張志新(化名)和其女友劉穎赞哗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辆雾,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肪笋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了度迂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藤乙。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惭墓,靈堂內(nèi)的尸體忽然破棺而出坛梁,到底是詐尸還是另有隱情,我是刑警寧澤腊凶,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布划咐,位于F島的核電站,受9級特大地震影響吭狡,放射性物質(zhì)發(fā)生泄漏尖殃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一划煮、第九天 我趴在偏房一處隱蔽的房頂上張望送丰。 院中可真熱鬧,春花似錦弛秋、人聲如沸器躏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽登失。三九已至遏佣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揽浙,已是汗流浹背状婶。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馅巷,地道東北人膛虫。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像钓猬,于是被迫代替她去往敵國和親稍刀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容