Nginx配置檔案詳解與優化建議

追風人聊Java發表於2021-09-03

1、概述

今天來詳解一下Nginx的配置檔案,以及給出一些配置建議,希望能對大家有所幫助。

2、nginx.conf

1)配置檔案位置

nginx 安裝目錄的 conf 資料夾下,例如:/usr/local/nginx/conf/nginx.conf 。

也可以將配置檔案放置在任意位置,在啟動Nginx時指定配置檔案的位置,例如:./nginx -c /home/nginx.conf

2)worker_processes

設定 worker 的數量,Nginx的程式模型採用的是master、worker模式,一個master負責協調,多個worker負責與客戶端互動。

此處設定為 auto 即可。

 

 3)events

設定使用的模型和每個 worker 的連線數。

Linux作業系統中模型建議使用 epoll。

worker 的連線數通常設定為 10240 即可,當然如果硬體資源非常好,也可以適當加大。

4)include

包含另一個檔案的內容,將另一個檔案的內容放在標記處。

多個檔案可以寫多個 include,也可以使用萬用字元匹配多個檔案。

 

 5)sendfile 和 tcp_nopush

sendfile: 設定檔案高效傳輸是否開啟,預設開啟。

tcp_nopush:必須是 sendfile 值為 on 時才有效,當 tcp_nopush 設定為 on 代表當資料包累計到一定大小時再傳送,有助於提升檔案傳輸效率。

建議都設定為 on。

 

 6)keepalive_timeout

 客戶端連線伺服器的超時時間,在連線斷開前,客戶端再次與伺服器進行互動,可複用此連線,不需要重新建立一個連線,減少了資源的開銷。

設定為 0,則表示互動完立即斷開連線。此值保持預設即可。

 

 

 7)gzip

設定為 on,代表會先將資料壓縮再進行傳輸,這樣做會增加傳輸的效率,節省頻寬,但會影響伺服器CPU的效能。

開啟此配置,還需要配置一些額外的屬性。

 此處可以權衡是節省頻寬還是提高CPU效能,建議開啟,根據實際情況配置。

gzip on;

gzip_min_length 512;   # 限制最小壓縮,單位位元組,小於該值則不會壓縮

gzip_comp_level 5;     # 壓縮的級別,值為1到9,級別越高壓縮的比例越大,cpu消耗越多

gzip_types text/plain application/javascript text/css image/jpeg image/gif image/png application/json; # 需要壓縮的檔案型別

 

8)server

一個server塊就是一個虛擬的服務。

在server塊中可以指定虛擬服務的 埠、服務名、路由規則等資訊。

server可以有多個。

一個server下,location也可以有多個。

    server {
        listen       90;           # 埠
        server_name  localhost;    # 服務名,可以是IP地址或者域名,當埠相同時,會根據服務名選擇走哪個路由規則

        location / {               # 根路徑路由規則
            root   html;           # 對應nginx安裝目標下的html資料夾,也可以設定為絕對路徑,例如:root /home/html;
            index  hello.html;     # 指定預設首頁為 hello.html
        }
     location /hello {
       root /home/hello;
       # index 省略,代表沒有預設頁
     }
       error_page
500 502 503 504 /50x.html; # 指定這些狀態碼跳轉的錯誤頁 location = /50x.html { root html; } }

 

9)location的匹配規則詳解

server塊中包含了location塊,location塊在一個server下可以有多個,主要是配置請求的路由規則。

nginx根據請求的資源路徑,與location塊進行匹配,然後根據location的配置對路由進行轉發。

location支撐多種匹配規則,下面就具體說一說。

 

精確匹配

    location / {            # 根路徑路由規則
            root   html;       # 對應nginx安裝目標下的html資料夾,也可以設定為絕對路徑,例如:root /home/html;
            index  hello.html; # 指定預設首頁為 hello.html
        }
     location /hello {
       root /home/hello;
       # index 省略,代表沒有預設頁
    }

 

正規表示式匹配

    location ~* \.(GIF|PNG|jpg|bmp|jpeg) {  # *代表不區分大小寫
       root /home/img;
    }

 

匹配以某個路徑開頭的請求

    location ^~ /server/page/ {
        root /home/page;
    }

 

3、綜述

今天對Nginx配置做了詳細講解,一些Nginx的高階應用,會在後面單獨介紹。希望大家多多溝通交流,共同成長。

 

相關文章