nginx配置文件nginx.conf 不包括server節點


 

整理的一個nginx.conf的配置,不包括server節點介紹

原文請查看,Nginx配置文件(nginx.conf)配置詳解

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

#nginx用戶及組,window下不指定。user用戶 組 ;
user nginx;
#nginx的工作進程數,數目。根據硬件調整,通常等於CPU數量或者2倍於CPU。
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

#指定進程可以打開的最大描述符,我這里設置int最大值,可不設置
#worker_rlimit_nofile 65535;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
# 每個工作進程的最大連接數量。根據硬件調整,和前面工作進程配合起來用,盡量大,但是別把cpu跑到100%就行。
# 每個進程允許的最多連接數,理論上每台nginx服務器的最大連接數為。worker_processes*worker_connections
    worker_connections 1024;
# 使用epoll的I/O 模型。linux建議epoll,FreeBSD建議采用kqueue,window下不指定。
# 不知道Nginx該使用哪種輪詢方法的話,它會選擇一個最適合你操作系統的
    use epoll;
# 告訴nginx收到一個新連接通知后接受盡可能多的連接。
    multi_accept on;
#keepalive超時時間。
    keepalive_timeout 60;
    
#客戶端請求頭部的緩沖區大小。這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這里設置為分頁大小。
#分頁大小可以用命令getconf PAGESIZE 取得。client_header_buffer_size該值必須設置為“系統分頁大小”的整倍數。
    client_header_buffer_size 4k;
    
    
# 為打開文件指定緩存,默認是沒有啟用的,
# max指定緩存數量,建議和打開文件數一致,
# inactive是指經過多長時間文件沒被請求后刪除緩存。
    open_file_cache max=65535 inactive=60s;
    
# 多長時間檢查一次緩存的有效信息。
    open_file_cache_valid 80s;
# open_file_cache指令中的inactive參數時間內文件的最少使用次數,
# 如果超過這個數字,文件描述符一直是在緩存中打開的,
# 如上例,如果有一個文件在inactive時間內一次沒被使用,它將被移除    
    open_file_cache_min_uses 1;
}

# 設定http服務器,利用它的反向代理功能提供負載均衡支持
http {

#設置日志記錄格式,
# 遠程訪問地址-訪問主機名[訪問時間] url和http協議
# 請求狀態  requestBody內容大小 那個頁面鏈接訪問過來
# 客戶瀏覽器的相關信息 http forward頭部ip地址
    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  /var/log/nginx/access.log  main;
# 保存服務器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的
# 如果需要增大hash max size 或 hash bucket size,我們需要增大server_names_hash_max_size的值
    server_names_hash_bucket_size 128;

# 客戶端請求頭部的緩沖區大小
    client_header_buffer_size 4k;
# 客戶端請求頭的緩沖區的最大數量和大小
    large_client_header_buffers 8 128k;
    
    open_file_cache max=102400 inactive=20s;
#設定通過nginx上傳文件的大小    
    client_max_body_size 300m;
    
#指定 nginx 是否調用sendfile 函數(zero copy 方式)來輸出文件。普通應用,必須設為on
#用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡IO處理速度,降低系統uptime
    sendfile            on;
#此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    
#代理服務器連接的超時時間_發起握手等候響應超時時間
    proxy_connect_timeout 90; 
#連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊之中等候處理(也可以說是后端服務器處理請求的時間)
    proxy_read_timeout 180;    
#后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據
    proxy_send_timeout 180;
    
# 設置從被代理服務器讀取的第一部分應答的緩沖區大小,通常情況下這部分應答中包含一個小的應答頭。
# 默認情況下這個值的大小為指令proxy_buffers中指定的一個緩沖區的大小
    proxy_buffer_size 256k;
    
# 設置用於讀取應答(來自被代理服務器)的緩沖區數目和大小,默認情況也為分頁大小
    proxy_buffers 4 256k;

#設置在寫入proxy_temp_path時數據的大小,預防一個工作進程在傳遞文件時阻塞太長
    proxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;
    proxy_temp_path /data0/proxy_temp_dir;
    
# proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區
# 設置內存緩存空間大小為200MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小為30GB。
    proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
# 如果把它設置為比較大的數值,例如256k,那么,無論使用firefox還是IE瀏覽器,來提交任意小於256k的圖片,都很正常
# 默認的client_body_buffer_size設置,也就是操作系統頁面大小的兩倍,8k或者16k,再提交256k圖片則會報500異常
    client_body_buffer_size 512k;

# 默認為off , 表示使nginx阻止HTTP應答代碼為400或者更高的應答。指定的error_page錯誤頁面才能生效
    proxy_intercept_errors on

# 設定mime類型,類型由mime.type文件定義
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _; 
#這是一個無效的域名,默認訪問http://localhost時,如果找不到匹配的域名,則會訪問第一個server節點,可以取任意匹配不到的字符串
#比如可以設置server_name s; ,,這個也可以使用localhost正確訪問到nginx歡迎頁面 root
/usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }

 

 2018.12.18增加額外的gzip模塊

gzip模塊壓縮指定格式文件,以減小傳輸帶寬

作用域:http,server,Location

可以在http節點下配置,或server節點下配置,nginx的配置是內層高於外層,

如果gzip模塊在http下關閉gzip off, 而server開啟的gzip on ,最后是由內層的server決定生效,開啟gzip模塊

 

 gzip配置參數:

http {
# gzip默認開啟,默認作用於text/html格式的文件(后綴html htm shtml默認壓縮),可以自定義gzip_types設置想要壓縮的文件格式
    gzip on;
# 設置壓縮響應所需的最小http協議版本1.1或1.0,默認值是1.1
    gzip_http_version 1.1;
# 指定允許壓縮的文件類型,文本內容css,xml,json,javascript可以進行壓縮
    gzip_types     text/plain text/css application/xml application/json text/javascript application/javascript application/x-javascript application/xml+rss;
# nginx作為反向代理時候設置哪個條件啟動gzip
    gzip_proxied   expired no-cache no-store private auth;
# gzip_disable的設置是禁用IE6的gzip壓縮
    gzip_disable   "MSIE [1-6]\.";
# 指定壓縮的文件最小尺寸,單位 bytes 字節,低於該值的不壓縮,超過該值的將被壓縮
    gzip_min_length  1k;
# 以16k為單位,按照原始數據大小以16k為單位的4倍申請內存,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果。
    gzip_buffers     4 16k;
# 指定壓縮等級,其值從1到9,數字越大,壓縮率越高,越消耗CPU,負載也越高
# 一般使用1-4等級
    gzip_comp_level 2;
# 增加響應頭Vary:Accept-Encoding,可以根據頭信息返回壓縮和非壓縮副本
    gzip_vary on;

}

額外補充

 gzip_proxied   expired no-cache no-store private auth;

指定當nginx作為代理服務器時,哪些條件下啟動gzip

# Nginx作為反向代理的時候啟用,開啟或者關閉后端服務器返回的結果,匹配的前提是后端服務器必須要返回包含"Via"的 header頭。  
# off - 關閉所有的代理結果數據的壓縮  
# expired - 啟用壓縮,如果header頭中包含 "Expires" 頭信息  
# no-cache - 啟用壓縮,如果header頭中包含 "Cache-Control:no-cache" 頭信息  
# no-store - 啟用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息  
# private - 啟用壓縮,如果header頭中包含 "Cache-Control:private" 頭信息  
# no_last_modified - 啟用壓縮,如果header頭中不包含 "Last-Modified" 頭信息  
# no_etag - 啟用壓縮 ,如果header頭中不包含 "ETag" 頭信息  
# auth - 啟用壓縮 , 如果header頭中包含 "Authorization" 頭信息  
# any - 無條件啟用壓縮  

via請求頭是用來通知中間網關或代理服務器地址,Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

via響應頭告知代理客戶端響應是通過哪里發送的,Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

 

gzip_disable “MSIE [1-6]\.”
指定那個在哪個瀏覽器上不使用gzip壓縮,MSIE是IE1-6的瀏覽器發送請求時,User-Agent中攜帶的瀏覽器標識,指定ie6及以下瀏覽器不使用gzip壓縮

 

gzip_vary on

啟用應答頭"Vary: Accept-Encoding"告訴代理服務器緩存兩種版本的資源:壓縮和非壓縮,這有助於一些公共代理不能正確檢測到 content-encoding:gzip 響應頭的信息

 

 

  正常的請求響應邏輯

客戶端和服務器之間直接請求響應過程。因為上面nginx服務器使用gzip壓縮的最小支持是http1.1,所以這個請求響應過程沒有問題

而如果客戶端和服務器之間有代理服務器,代理服務器到服務器使用的是http/1.0協議,結果服務器返回的是非壓縮副本資源到代理服務器,代理服務器再轉到客戶端。

結果是這個gzip功能沒有生效。過程如下圖

這里寫圖片描述 

所以,如果在有代理服務器,網關的情況下,要使用gzip壓縮,則需要將gzip_http_version改為1.0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM