nginx配置文件詳解

jopen 10年前發布 | 19K 次閱讀 Web服務器 Nginx
#關掉訪問日志可以優化服務器

#定義Nginx運行的用戶和用戶組
#user  nobody;

#nginx進程數
#如果NginX提供了SLL或者gzip,對cpu的使用率較高,且系統有兩個以上的cpu
#可設置為等于cpu總核心數 worker_processes  1;#設置最大打開文件數的限制 worker_rlimit_nofile 65535;S#error_log  x:/xxxxx/xxxx/log/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#進程文件 pid        logs/nginx.pid;#Nginx的事件模塊,用于控制Nginx如何處理連接,參數會影響性能,慎重設置。 events {
    #單個后臺worker process進程的最大并發鏈接數
    #書本建議值為 65535      worker_connections  1024;
    #woker_connections 65535;
    # 并發總數是 worker_processes 和 worker_connections 的乘積
    # 即 max_clients = worker_processes * worker_connections
    # 在設置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4  為什么
    # 為什么上面反向代理要除以4,應該說是一個經驗值
    # 根據以上條件,正常情況下的Nginx Server可以應付的最大連接數為:4 * 8000 = 32000
    # worker_connections 值的設置跟物理內存大小有關
    # 因為并發受IO約束,max_clients的值須小于系統可以打開的最大文件數
    # 而系統可以打開的最大文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右
    # 我們來看看360M內存的VPS可以打開的文件句柄數是多少:
    # $ cat /proc/sys/fs/file-max
    # 輸出 34336
    # 32000 < 34336,即并發連接總數小于系統可以打開的文件句柄總數,這樣就在操作系統可以承受的范圍之內
    # 所以,worker_connections 的值需根據 worker_processes 進程數目和系統可以打開的最大文件總數進行適當地進行設置
    # 使得并發總數小于操作系統可以打開的最大文件數目
    # 其實質也就是根據主機的物理CPU和內存進行配置
    # 當然,理論上的并發總數可能會和實際有所偏差,因為主機還有其他的工作進程需要消耗系統資源。
    # ulimit -SHn 65535 }#Nginx的HTTP內核模塊,設定http服務器 http {
    #文件擴展名與文件類型映射表     include       mime.types;
    #默認文件類型     default_type  application/octet-stream;
    #默認編碼
    #charset utf-8; 

    #隱藏Nginx版本號
    #server_tokens off

   #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  x:/xxxx/xxxx/log/access.log  main;
    #關閉日志
    #access_log off;
    #開啟高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件
    #對于普通應用設為 on,
    #如果用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。
    #注意:如果圖片顯示不正常把這個改成off。     sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;     keepalive_timeout  60;


    #啟用gzip壓縮功能
    #gzip  on;
    #用于設置響應體的最小長度,單位為字節。
    #gzip_min_length 1000;
    #設置啟用或禁用從代理服務器上收到的響應體Gzip壓縮功能
    # expired---如果Expires header阻止緩存,那么啟用壓縮
    # auth -----假如設置了Authorization header,則啟用壓縮
    #gzip_proxied expired no-cache no-store private auth;
    #gzip_types text/plain application/xml;
    #gzip_disable "MSIE [1-6].";

    #用于指定客戶端請求體的最大值。超過將收到413錯誤     client_max_body_size       16m;
    #指定客戶端請求體緩存的大小。
    #入股請求體大于該緩存大小,那么整個請求體或者請求體的某些部分會被寫入臨時文件
    #默認值 8k/16k
    #默認值等于兩頁面的大小,頁面的大小依賴于所在的操作系統     client_body_buffer_size    256k;
    proxy_temp_file_write_size 128k;
    proxy_temp_path  x:/xxx/xxxxx/public;
    #levels設置目錄層次
    #keys_zone設置緩存名字和共享內存大小
    #inactive在指定時間內沒人訪問則被刪除在這里是1天
    #max_size最大緩存空間
    #proxy_cache_path x:/xxxx/xxx/cache levels=1:2 keys_zone=cache_one:256m inactive=2d max_size=300m;      upstream mywebapp_thin 
    {
    #指定服務器組的負載均衡方法,請求基于客戶端的IP地址在服務器間進行分發。 
    #IPv4地址的前三個字節或者IPv6的整個地址,會被用來作為一個散列key。 
    #這種方法可以確保從同一個客戶端過來的請求,會被傳給同一臺服務器。
    #除了當服務器被認為不可用的時候,這些客戶端的請求會被傳給其他服務器,
    #而且很有可能也是同一臺服務器。
    #如果使用了該指明,那么將會導致客戶端的請求以客戶端的IP地址分配在upstream中的server之間。
    #它的關健技術在于對這個請求客戶但ip地址進行哈希計算
    #這種方法保證了客戶端請求總是能夠傳遞到同一臺后臺服務器,但是如果該服務器被認定為無效,
    #那么這個客戶端的請求將會被傳遞到其他服務器。
    #可以高概率將客戶端請求總是連接到同一臺服務器
    #如果使用這個指令,就不可以使用權重。     ip_hash;
    #upstream的負載均衡,weight是權重,可以根據機器配置定義權重。
    #weigth參數表示權值,權值越高被分配到的幾率越大。
    #如果服務器要移除,在 ip后加個down
    #backup表示備用     server 127.0.0.1:3000;
    server 127.0.0.1:3001 down;
    }



    #設定虛擬主機配置     server {
        #監聽端口         listen       80 default_server;
        #定義使用 localhost訪問
        #域名可以有多個,用空格隔開
        #將進入的HTTP請求的主機頭(Host header)與Nginx配置文件中各個Server{...}區段比較
        #并且選擇第一個被匹配的server區段——。
        #服務器名字按照一下順序處理:
        #1.全域名,靜態域名
        #2.開始部分使用通配符的域名,例如:*.exmple.com
        #3.結尾部分使用通配符的域名,例如:www.example.*
        #4.帶有正則表達式的域名。         server_name  localhost;

        #默認編碼
        #charset koi8-r;

        #rewrite_log on;

        #設定本虛擬主機的訪問日志
        #access_log  logs/host.access.log  main;
        #access_log  x:/xxx/xxx/log/host.access.log;          root   x:/xxx/xxx/public;



        #圖片緩存時間設置
        #location ~* ^/(images|javascripts|stylesheets|img)/ 
        #location ~* .(gif|jpg|jpeg|png|bmp|swf)$ 
        #{
        #    root   x:/xx/xxx/public;
        #    access_log    off;
        #    log_not_found off;
        #    expires       max;

            #通過key來hash,定義KEY的值
        #    proxy_cache_key      $host$uri$is_args$args;
            #根keys_zone后的內容對應
        #    proxy_cache         cache_one;
            #哪些狀態緩存多長時間
        #    proxy_cache_valid    200 302 7d;
            #其他的緩存多長時間
        #    proxy_cache_valid    301 3d;
        #    proxy_cache_valid    any 1m;

        #   if (!-f $request_filename) {
        #    proxy_pass http://mywebapp_thin;
        #    break;
        #    } 
        #break;
        #}

        #允許根據URI的需要進行配置訪問
        #可以跟進字面字符串配置也可以根據正則表達式配置
        #如果使用正則表達式配置,必須使用一下前綴
        # “~” 區分大小寫匹配
        # “~*” 不區分大小寫
        #先按照字面字符串檢測,然后再正則表達式,正則表達式
        #默認請求,對 "/" 啟用反向代理         location / {
            #定義了一個請求的根文檔目錄             root   x:/xxx/xxx/public;
            #定義首頁索引文件的名稱             index  index.html index.htm;
            if (!-f $request_filename) {
            proxy_pass http://mywebapp_thin;
             break;
            } 
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #以下是一些反向代理的配置,可選。             proxy_set_header Host $host;
            #允許客戶端請求的最大單文件字節數             client_max_body_size 10m; 
            #緩沖區代理緩沖用戶端請求的最大字節數,             client_body_buffer_size 128k; 
            #nginx跟后端服務器連接超時時間(代理連接超時)             proxy_connect_timeout 90; 
            #后端服務器數據回傳時間(代理發送超時)             proxy_send_timeout 90;
            #連接成功后,后端服務器響應時間(代理接收超時)              proxy_read_timeout 90; 
            #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小             proxy_buffer_size 4k; 
            #proxy_buffers緩沖區,網頁平均在32k以下的設置             proxy_buffers 4 32k;
            #代理的時候,開啟或關閉緩沖后端服務器的響應。              proxy_buffering on;
            #高負荷下緩沖大小(proxy_buffers*2)             proxy_busy_buffers_size 64k; 
            #設定緩存文件夾大小,大于這個值,將從upstream服務器傳             proxy_temp_file_write_size 64k;

              #通過key來hash,定義KEY的值
        #    proxy_cache_key      $host$uri$is_args$args;
            #根keys_zone后的內容對應
        #    proxy_cache         cache_one;
            #哪些狀態緩存多長時間
        #    proxy_cache_valid    200 302 7d;
            #其他的緩存多長時間
        #    proxy_cache_valid    301 3d;
        #    proxy_cache_valid    any 1m;         }


        #指定一個uri,在訪問出錯的時候會顯示的頁面
        #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;
        #}

        #圖片緩存時間設置
        #location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        #{
        #    expires 10d;
        #}  
        #JS和CSS緩存時間設置
        #location ~ .*.(js|css)?$
        #{
        #    expires 1h;
        #}

        #FastCGI相關參數是為了改善網站的性能:減少資源占用,提高訪問速度。         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;
    }


    # 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;
    #    }
    #}  }
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!