1. 程式人生 > >Nginx學習(二)----Nginx配置檔案詳解

Nginx學習(二)----Nginx配置檔案詳解

Nginx配置檔案詳解

安裝完成後,輸入cd /usr/local/nginx/conf/,進入conf資料夾,通過vim nginx.conf命令,檢視nginx配置檔案,預設配置檔案如下所示:
補充學習地址:Nginx伺服器配置檔案nginx.conf例項詳解

#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; 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; # } #} }

配置檔案結構

nginx配置檔案主要由三塊組成 :全域性塊、 events塊 、http塊,http塊中包含http全域性塊和多個server塊,每個server塊中包含server全域性塊和多個location塊,採用就近原則生效

...              #全域性塊

events {         #events塊
   ...
}

http      #http塊
{
    ...   #http全域性塊
    server        #server塊
    { 
        ...       #server全域性塊
        location [PATTERN]   #location塊
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全域性塊
}
  1. 全域性塊:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程序pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等。
  2. events塊:配置影響nginx伺服器或與使用者的網路連線。有每個程序的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。
  3. http塊:可以巢狀多個server,配置代理,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等。
  4. server塊:配置虛擬主機的相關引數,一個http中可以有多個server。
  5. location塊:配置請求的路由,以及各種頁面的處理情況。

補充三個配置檔案案例:
例一

user  www www;
worker_processes  2;

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

pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  2048;
}


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  65;

  # gzip壓縮功能設定
    gzip on;
    gzip_min_length 1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;

  # http_proxy 設定
    client_max_body_size   10m;
    client_body_buffer_size   128k;
    proxy_connect_timeout   75;
    proxy_send_timeout   75;
    proxy_read_timeout   75;
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;

  # 設定負載均衡後臺伺服器列表 
    upstream  backend  { 
              #ip_hash; 
              server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  
              server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  
    }

  # 很重要的虛擬主機配置
    server {
        listen       80;
        server_name  itoatest.example.com;
        root   /apps/oaapp;

        charset utf-8;
        access_log  logs/host.access.log  main;

        #對 / 所有做負載均衡+反向代理
        location / {
            root   /apps/oaapp;
            index  index.jsp index.html index.htm;

            proxy_pass        http://backend;  
            proxy_redirect off;
            # 後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;  
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

        }

        #靜態檔案,nginx自己處理,不去backend請求tomcat
        location  ~* /download/ {  
            root /apps/oa/fs;  

        }
        location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$   
        {   
            root /apps/oaapp;   
            expires      7d; 
        }
        location /nginx_status {
            stub_status on;
            access_log off;
            allow 192.168.10.0/24;
            deny all;
        }

        location ~ ^/(WEB-INF)/ {   
            deny all;   
        }
        #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;
        }
    }

  ## 其它虛擬主機,server 指令開始
}

例二:

#執行使用者
user nobody;
#啟動程序,通常設定成和cpu的數量相等
worker_processes  1;

#全域性錯誤日誌及PID檔案
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#工作模式及連線數上限
events {
    #epoll是多路複用IO(I/O Multiplexing)中的一種方式,
    #僅用於linux2.6以上核心,可以大大提高nginx的效能
    use   epoll; 

    #單個後臺worker process程序的最大併發連結數    
    worker_connections  1024;

    # 併發總數是 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

}


http {
    #設定mime型別,型別由mime.type檔案定義
    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 指令指定 nginx 是否呼叫 sendfile 函式(zero copy 方式)來輸出檔案,
    #對於普通應用,必須設為 on,
    #如果用來進行下載等應用磁碟IO重負載應用,可設定為 off,
    #以平衡磁碟與網路I/O處理速度,降低系統的uptime.
    sendfile     on;
    #tcp_nopush     on;

    #連線超時時間
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay     on;

    #開啟gzip壓縮
    gzip  on;
    gzip_disable "MSIE [1-6].";

    #設定請求緩衝
    client_header_buffer_size    128k;
    large_client_header_buffers  4 128k;


    #設定虛擬主機配置
    server {
        #偵聽80埠
        listen    80;
        #定義使用 www.nginx.cn訪問
        server_name  www.nginx.cn;

        #定義伺服器的預設網站根目錄位置
        root html;

        #設定本虛擬主機的訪問日誌
        access_log  logs/nginx.access.log  main;

        #預設請求
        location / {

            #定義首頁索引檔案的名稱
            index index.php index.html index.htm;   

        }

        # 定義錯誤提示頁面
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
        }

        #靜態檔案,nginx自己處理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {

            #過期30天,靜態檔案不怎麼更新,過期可以設大一點,
            #如果頻繁更新,則可以設定得小一點。
            expires 30d;
        }

        #PHP 指令碼請求全部轉發到 FastCGI處理. 使用FastCGI預設配置.
        location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        #禁止訪問 .htxxx 檔案
            location ~ /.ht {
            deny all;
        }

    }
}

例三

user  www www;  #指定Nginx Worker程序執行使用者以及使用者組

worker_processes 2; #指定了Nginx要開啟的程序數,多核CPU指定和核數一樣多的程序數

pid        logs/nginx.pid; #指定程序id的儲存檔案位置

worker_rlimit_nofile 65535; #指定單程序開啟檔案數,需與系統設定一致



events {

use epoll;  #指定nginx工作模式,nginx主要的工作模式有select、poll、kqueue、epoll

            其中select、poll是標準工作模式,kqueue、epoll為高效工作模式,epoll用在Linux系統中,而kqueue用在BSD系統中

    worker_connections  65535;#指定單程序的最大連線數

}



HTTP部分



http {

    include      mime.types; #指定配置檔案所包含的檔案

    default_type  application/octet-stream; #指定預設型別為二進位制流,也就是當檔案型別未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP檔案就會出現下載視窗



    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#設定日誌格式

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';;





client_max_body_size  20m;  #設定允許客戶端請求的最大的單個檔案位元組數

    client_header_buffer_size    16k;#指定來自客戶端請求頭的headerbuffer大小,如果自定義了訊息頭或有更大的cookie,可以在這裡增加緩衝大小

    large_client_header_buffers  4 32k;#指定客戶端請求中較大的訊息頭的快取最大數量和大小,4為個數,32k為大小,最大快取為4個32kb



    sendfile        on;#開啟高效傳輸模式

    tcp_nopush    on;  # tcp_nopush,tcp_nodelay設定on,防止網路阻塞

    tcp_nodelay    on;         



    keepalive_timeout  65; #指定客戶端連線保持活動的超時時間

    client_header_timeout  10;#指定客戶端請求頭讀取超時時間,如果超過這個時間,客戶端還沒有傳送任何資料,Nginx將返回“Request time out(408)”錯誤

    client_body_timeout  10;#指定客戶端請求主體讀取超時時間,如果超過這個時間���客戶端還沒有傳送任何資料,Nginx將返回“Request time out(408)”錯誤

send_timeout        10;#指定響應客戶端的超時時間。這個超時僅限於兩個連線活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連線





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

    gzip_min_length  1k; #設定允許壓縮的頁面最小位元組數

    gzip_buffers    4  16k; #指定記憶體空間來存貯壓縮結果,這裡指定4個單位為16k的記憶體來儲存壓縮結果,即總大小為64k

    gzip_http_version  1.1;#指定識別HTTP協議版本,預設是1.1

    gzip_comp_level  2;#指定gzip壓縮比,1 壓縮比最小,處理速度最快;9 壓縮比最大,傳輸速度快,但處理最慢,也比較消耗CPU資源

    gzip_types  text/plain application/x-javascript text/css application/xml;#指定壓縮的型別,無論是否指定,“text/html”型別總是會被壓縮

    gzip_vary  on;#該選項開啟可以讓前端的快取伺服器快取經過gzip壓縮的頁面,例如,用Varnish快取經過Nginx壓縮的資料



server_tokens off;#隱藏Nginx版本號



server {

        listen      8000; #指定Nginx監埠

        server_name  localhost;#用來指定IP或者域名



        charset utf-8;#指定Nginx預設的字符集,只有utf-8支援中文字元

        access_log  logs/host.access.log  main;#指定訪問日誌的名稱及位置



        location / {

            index  index.html index.htm;#設定預設首頁

            root /tom/webapps/ROOT;#指定網頁根目錄

        }



location ~ (jsp|\?) {      #指定url中包含jsp或者?的全部轉發到192.168.0.10的80埠即tomcat處理

            proxy_pass  http://192.168.0.10:80;

        }

相關推薦

Nginx 效能優化(配置檔案

  隨著訪問量的不斷增加,需要對 Nginx 和核心做相應的優化來滿足高併發使用者的訪問,那下面在單臺 Nginx 伺服器來優化相關引數。 Nginx.conf 配置優化: worker_processes 8; nginx 程序數,建議按照 cpu 數目來指定,一般為它的倍數。worke

nginx伺服器安裝及配置檔案(轉載)

nginx在工作中已經有好幾個環境在使用了,每次都是重新去網上扒部落格,各種編譯配置,今天自己也整理一份安裝文件和nginx.conf配置選項的說明,留作以後參考。像負載均衡配置(包括健康檢查)、快取(包括清空快取)配置例項,請參考http://segmentfault.

學習dubbo(配置檔案

一、dubbo常用配置 <dubbo:service/> 服務配置,用於暴露一個服務,定義服務的元資訊,一個服務可以用多個協議暴露,一個服務也可以註冊到多個註冊中心。 eg、<dubbo:service ref="demoService" interface="com.unj.dubb

Spring Boot(配置檔案

簡介 Spring Boot使用“習慣由於配置”(專案中存在大量預設的配置,而且內建tomcat)的理念,讓你的無需手動進行配置就可以將專案執行起來。使用Spring Boot很容易建立一個獨立執行的、準生產級別的Spring框架的專案。同時,Spring Boot還提供一個全域性配置檔案對一些

Nginx學習()----Nginx配置檔案

Nginx配置檔案詳解 安裝完成後,輸入cd /usr/local/nginx/conf/,進入conf資料夾,通過vim nginx.conf命令,檢視nginx配置檔案,預設配置檔案如下所示: 補充學習地址:Nginx伺服器配置檔案nginx.conf例

三大框架(ssh)學習——配置檔案

多配置檔案實現 專案經常需要多人協作開發,但是如果大家都是用同一個struts.xml檔案,會互相影響不利於開發的正常開展。這樣,我們可以通過<include>元素指定多個配置檔案。 可以在src下面建立多個struts配置檔案。然後再struts.xml中分別引入: str

Nginx配置配置檔案

文章目錄 配置檔案 nginx.conf配置檔案詳解 用於除錯、定位問題的配置引數 正常執行必備的配置引數 優化效能的配置引數 事件相關配置 Fastcgi相關配置引數 常需要調整的引數 nginx作為web伺服器時使

Nginx實戰之1.1-1.6 Nginx介紹,安裝及配置檔案

1.1 Nginx介紹 HTTP協議發展簡史 加粗  https://coding.net/u/aminglinux/p/nginx/git/blob/master/http/version.md  1991年釋出0.9版,只有GET方法,僅支援html,一個連線一個請求 &n

nginx配置檔案

#定義Nginx執行的使用者和使用者組user www www; #nginx程序數,建議設定為等於CPU總核心數。worker_processes 8; #全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]error_log /var/

nginx配置檔案~~

#nginx程序,一般設定為和cpu核數一樣 worker_processes 4;                        #錯誤日誌存放目錄  error_

【SpringBoot學習之路】06.Springboot配置檔案

轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾 【SpringBoot學習之路】06.Springboot配置檔案詳解(二) 配置檔案值注入 @Value獲取值和@ConfigurationProperties獲取值比較

nginx 實戰--第二章 nginx配置檔案

1.nginx 配置檔案結構 配置檔案結構 全域性配置(user、worker_processes、error_log、pid) events(網路連線相關,worker_connections) http(最重要的部分,大部分功能都放這裡) server(虛擬主機相

Nginx配置檔案說明

#啟動子程序程式預設使用者 #user nobody; #一個主程序和多個工作程序。工作程序是單程序的,且不需要特殊授權即可執行;這裡定義的是工作程序數量 worker_processes 1; #全域性錯誤日誌的位置及日誌格式 #error_log logs/error.log;

Nginx.conf配置檔案

執行使用者 user nobody; 啟動程序,通常設定成和cpu的數量相等 worker_processes 1; 全域性錯誤日誌及PID檔案 error_log logs/error.log; error_log logs/error.log not

nginx教程第九篇:nginx配置檔案彙總

#####Nginx配置檔案nginx.conf中文詳解##### #定義Nginx執行的使用者和使用者組 user www www; #nginx程序數,建議設定為等於CPU總核心數。 worker_processes 8; #全域性錯誤日誌定義型別,

nginx.conf 配置檔案

######Nginx配置檔案nginx.conf中文詳解##### #定義Nginx執行的使用者和使用者組 user www www; #nginx程序數,建議設定為等於CPU總核心數。 worker_processes 8; #全域性錯誤日誌定義型別

配置nginx方向代理,實現URL隱形轉發 (附帶nginx配置檔案)

配置nginx方向代理,實現URL隱形轉發 (附帶nginx配置檔案詳解) 免費領取滿減阿里雲紅包 專案名稱:【域名解析–隱形URL轉發】–centos 7.3 環境: 阿里雲伺服器之上有多個tomcat; tomcat的網站基於ip+埠開發+專案名名稱。 要求

SpringBoot 學習筆記 配置檔案

在建立SpringBoot專案時,工程會自動建立一個application.properties,或者application.yml,兩種檔案格式都支援,這裡用application.yml,加入以下配置,注意空格 1. 引入依賴 &

nginx配置檔案

nginx.conf配置檔案詳解 其實,對比,apache的配置檔案,它的相對比較清晰和簡單,之前覺得很難,現在沉下心來想想,其實很簡單。大致的分塊下,基本就分為以下幾塊: mainevents {....}http {.... upstream 

【轉載】nginx 配置檔案

user  www www;#使用哪個使用者啟動nginx 前面是使用者,後面是組 worker_processes 4;#nginx工作的程序數量 #[ debug | info | notice | warn | error | crit ]   錯誤日誌的級別及位置