Nginx配置詳解

2021-09-30 15:36:03 字數 3579 閱讀 5429

#執行使用者

user www www;

#啟動程序數,一般為cpu核數的兩倍,開啟太多,會影響主程序排程,占用cpu會增高

worker_processes 2;

#全域性錯誤日誌及pid檔案

error_log logs/error.log notice;

pid logs/nginx.pid;

#繫結worker程序和cpu,只有linux核心高於2.4可用;

worker_cpu_affinity 0001 0100 1000 0010 0001 0100 1000 0010;

#和系統的單程序開啟檔案數一致,使用ulimit -shn 65534 設定

worker_rlimit_nofile    65534;

#工作模式及連線數上限

events

#設定http伺服器

http 進行定義

include mime.types;

#不能帶單位!配置個主機時必須設定該值,否則無法執行nginx或測試時不通過,該設定與server_names_hash_max_size 共同控制儲存伺服器名的hash表,hash bucket size總是等於hash表的大小,並且是一路處理器快取大小的倍數。若hash bucket size等於一路處理器快取的大小,那麼在查詢鍵的時候,最壞的情況下在記憶體中查詢的次數為2。第一次是確定儲存單元的位址,第二次是在儲存單元中查詢鍵 值。若報出hash max size 或 hash bucket size的提示,則我們需要增加server_names_hash_max_size的值。

server_names_hash_bucket_size 128;

#4為個數,128k為大小,預設是4k。申請4個128k。當http 的uri太長或者request header過大時會報414 request uri too large或400 bad request,這是很有可能是cookie中寫入的值太大造成的,因為header中的其他引數的size一般比較固定,只有cookie可能被寫入較 大的資料,這時可以調大上述兩個值,相應的瀏覽器中cookie的位元組數上限會增大。

client_header_buffer_size 128k;

large_client_header_buffers 4 128k;

#http請求的body最大限制值,若超出此值,報413 request entity too large

client_max_body_size 8m;

#關閉報錯時的nginx版本顯示

server_tokens off;

#開啟系統函式sendfile()支援

sendfile on;

#開啟linux(僅linux下)下tcp_cork,sendfile開啟時才有效,用來傳送系統http response headers設定該選項的目的是告訴tcp協議不要僅僅為了清空傳送快取而傳送報文段。通常應該設定tcpnopush插口選項。這樣,當請求長度超過 報文段最大長度時,協議就會盡可能發出滿長度的報文段。這樣可以減少報文段的數量,減少的程度取決於每次傳送的資料量。

tcp_nopush on;

#開啟tcp_nodelay在包含了keepalive才有效

keepalive_timeout 60;

tcp_nodelay on;

#上述四項可以有效提高檔案傳輸效能

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

#設定上述數值設定太小時若負載上來時可能報 502 bad gateway

#開啟gzip壓縮,實時壓縮輸出資料流

gzip on;

#從content-length中數值獲取驗證,小於1k會越壓越大

gzip_min_length  1k;

# 以16k為單位4倍的申請記憶體做壓縮結果流快取,預設值是申請跟原始資料相同大小的記憶體空間去儲存gzip壓縮結果。

gzip_buffers    4 16k;

# 預設1.1,大部分瀏覽器已經支援gzip解壓,不必理會

#壓縮比率1-9,1壓縮比最小處理速度最快,9壓縮比最大但處理最慢且耗cpu

gzip_comp_level 2;

#此選項可讓前端的快取服務,如squid快取經過nginx壓縮的資料

gzip_vary on;

#該選項在做反向**時設定壓縮,後面引數為驗證的header頭資訊,再做相應的壓縮處理,關閉為off

#gzip_proxied expired no-cache no-store private no_last_modified no_etag auth any

#定義名為connlimit的併發連線數限制空間,儲存10m的帶有二進位制ip的會話資訊,每個會話資訊是32bytes,10m應該可以記錄320000個會話。配合limit_conn 使用。

#limit_zone  connlimit  $binary_remote_addr  10m;

#設定負載均衡的伺服器列表

#設定檢視nginx狀態的位址

location /nginxstatus

#備註:conf/htpasswd 檔案的內容用 apache 提供的 htpasswd 工具來產生即#可。

#檢視 nginx 執行狀態

#輸入位址 輸入驗證帳號密碼,即可看到

#類似如下內容:

#active connections: 328

#server accepts handled requests

#9309 8982 28890

#reading: 1 writing: 3 waiting: 324

#第一行表示目前活躍的連線數

#第三行的第三個數字表示nginx執行到當前時間接受到的總請求數,如果快達到了上

#限,就需要加大上限值。

#第四行是nginx的佇列狀態

Nginx配置詳解

nginx的主要配置檔案是nginx.conf,位於安裝目錄下的nginx conf資料夾裡,主要的配置引數如下 定義nginx執行的使用者和使用者組 user nobody nobody nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,...

nginx配置詳解

定義nginx執行的使用者和使用者組 user www www nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,debug info notice warn error crit error log var log nginx error...

NGINX配置詳解

nginx 配置檔案 user nginx 使用者worker processes 8 工作程序,根據硬體調整,大於等於cpu核數 error log logs nginx error.log crit 錯誤日誌 pid logs nginx.pid pid放置的位置 worker rlimit n...