主頁 > 知識(shí)庫 > Nginx配置參數(shù)中文說明詳解(負(fù)載均衡與反向代理)

Nginx配置參數(shù)中文說明詳解(負(fù)載均衡與反向代理)

熱門標(biāo)簽:濰坊寒亭400電話辦理多少錢 宜賓銷售外呼系統(tǒng)軟件 廈門防封電銷電話卡 高德地圖標(biāo)注公司需要錢 地圖標(biāo)注員有發(fā)展前景嗎 外呼系統(tǒng)全國 云南電商智能外呼系統(tǒng)哪家好 四川保險(xiǎn)智能外呼系統(tǒng) 地圖標(biāo)注能更改嗎

PS:最近在看<<高性能Linux服務(wù)器構(gòu)建實(shí)戰(zhàn)>>的Nginx章節(jié),對(duì)其nginx介紹的非常詳細(xì),現(xiàn)把經(jīng)常用到的Nginx配置參數(shù)中文說明摘錄和nginx做負(fù)載均衡的本人真實(shí)演示實(shí)例抄錄下來以便以后查看!

Nginx配置參數(shù)中文詳細(xì)說明

#定義Nginx運(yùn)行的用戶和用戶組
user www www;
#
#nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù).
worker_processes 8;
#
#全局錯(cuò)誤日志定義類型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;
#
#進(jìn)程文件
pid /var/run/nginx.pid;
#
#一個(gè)nginx進(jìn)程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(系統(tǒng)的值ulimit -n)與nginx進(jìn)程數(shù)相除,但是nginx分配請(qǐng)求并不均勻,所以建議與ulimit -n的值保持一致.
worker_rlimit_nofile 65535;
#
#工作模式與連接數(shù)上限
events
{
    #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內(nèi)核中的高性能網(wǎng)絡(luò)I/O模型,如果跑在FreeBSD上面,就用kqueue模型.
    use epoll;
    #單個(gè)進(jìn)程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù))
    worker_connections 65535;
}
#
#設(shè)定http服務(wù)器
http
{
    include mime.types; #文件擴(kuò)展名與文件類型映射表
    default_type application/octet-stream; #默認(rèn)文件類型
    #charset utf-8; #默認(rèn)編碼
    server_names_hash_bucket_size 128; #服務(wù)器名字的hash表大小
    client_header_buffer_size 32k; #上傳文件大小限制
    large_client_header_buffers 4 64k; #設(shè)定請(qǐng)求緩
    client_max_body_size 8m; #設(shè)定請(qǐng)求緩
    #
    #開啟目錄列表訪問,合適下載服務(wù)器,默認(rèn)關(guān)閉.
    autoindex on;                   #顯示目錄
    autoindex_exact_size on;        #顯示文件大小 默認(rèn)為on,顯示出文件的確切大小,單位是bytes 改為off后,顯示出文件的大概大小,單位是kB或者M(jìn)B或者GB
    autoindex_localtime on;         #顯示文件時(shí)間 默認(rèn)為off,顯示的文件時(shí)間為GMT時(shí)間 改為on后,顯示的文件時(shí)間為文件的服務(wù)器時(shí)間
    #
    sendfile on; #開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,對(duì)于普通應(yīng)用設(shè)為 on,如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載.注意:如果圖片顯示不正常把這個(gè)改成off.
    tcp_nopush on; #防止網(wǎng)絡(luò)阻塞
    tcp_nodelay on; #防止網(wǎng)絡(luò)阻塞
    #
    keepalive_timeout 120; #(單位s)設(shè)置客戶端連接保持活動(dòng)的超時(shí)時(shí)間,在超過這個(gè)時(shí)間后服務(wù)器會(huì)關(guān)閉該鏈接
    #
    #FastCGI相關(guān)參數(shù)是為了改善網(wǎng)站的性能:減少資源占用,提高訪問速度.下面參數(shù)看字面意思都能理解.
    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;
    #
    #gzip模塊設(shè)置
    gzip on; #開啟gzip壓縮輸出
    gzip_min_length 1k; #允許壓縮的頁面的最小字節(jié)數(shù),頁面字節(jié)數(shù)從header偷得content-length中獲取.默認(rèn)是0,不管頁面多大都進(jìn)行壓縮.建議設(shè)置成大于1k的字節(jié)數(shù),小于1k可能會(huì)越壓越大
    gzip_buffers 4 16k; #表示申請(qǐng)4個(gè)單位為16k的內(nèi)存作為壓縮結(jié)果流緩存,默認(rèn)值是申請(qǐng)與原始數(shù)據(jù)大小相同的內(nèi)存空間來存儲(chǔ)gzip壓縮結(jié)果
    gzip_http_version 1.1; #壓縮版本(默認(rèn)1.1,目前大部分瀏覽器已經(jīng)支持gzip解壓.前端如果是squid2.5請(qǐng)使用1.0)
    gzip_comp_level 2; #壓縮等級(jí).1壓縮比最小,處理速度快.9壓縮比最大,比較消耗cpu資源,處理速度最慢,但是因?yàn)閴嚎s比最大,所以包最小,傳輸速度快
    gzip_types text/plain application/x-javascript text/css application/xml;
    #壓縮類型,默認(rèn)就已經(jīng)包含text/html,所以下面就不用再寫了,寫上去也不會(huì)有問題,但是會(huì)有一個(gè)warn.
    gzip_vary on;#選項(xiàng)可以讓前端的緩存服務(wù)器緩存經(jīng)過gzip壓縮的頁面.例如:用squid緩存經(jīng)過nginx壓縮的數(shù)據(jù)
    #
    #開啟限制IP連接數(shù)的時(shí)候需要使用
    #limit_zone crawler $binary_remote_addr 10m;
    #
    ##upstream的負(fù)載均衡,四種調(diào)度算法(下例主講)##
    #
    #虛擬主機(jī)的配置
    server
    {
        #監(jiān)聽端口
        listen 80;
        #域名可以有多個(gè),用空格隔開
        server_name wangying.sinaapp.com;
        index index.html index.htm index.php;
        root /data/www/;
        location ~ .*\.(php|php5)?$
        {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
        #圖片緩存時(shí)間設(shè)置
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
            expires 10d;
        }
        #JS和CSS緩存時(shí)間設(shè)置
        location ~ .*\.(js|css)?$ {
            expires 1h;
        }

        #日志格式設(shè)定
        log_format access '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" $http_x_forwarded_for';
        #定義本虛擬主機(jī)的訪問日志
        access_log /var/log/nginx/access.log access;
        #
        #設(shè)定查看Nginx狀態(tài)的地址.StubStatus模塊能夠獲取Nginx自上次啟動(dòng)以來的工作狀態(tài),此模塊非核心模塊,需要在Nginx編譯安裝時(shí)手工指定才能使用
        location /NginxStatus {
            stub_status on;
            access_log on;
            auth_basic "NginxStatus";
            auth_basic_user_file conf/htpasswd;
            #htpasswd文件的內(nèi)容可以用apache提供的htpasswd工具來產(chǎn)生.
        }
    }
}

Nginx多臺(tái)服務(wù)器實(shí)現(xiàn)負(fù)載均衡

Nginx負(fù)載均衡服務(wù)器:

IP:192.168.1.1
Web服務(wù)器列表:
Web1:192.168.1.2
Web2:192.168.1.3

實(shí)現(xiàn)目的:用戶訪問192.168.1.1服務(wù)器時(shí),通過Nginx負(fù)載均衡到Web1和Web2服務(wù)器

http
{
  ##upstream的負(fù)載均衡,四種調(diào)度算法##
  #調(diào)度算法1:輪詢.每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某臺(tái)服務(wù)器宕機(jī),故障系統(tǒng)被自動(dòng)剔除,使用戶訪問不受影響
  upstream webhost {
    server 192.168.1.2:80 ;
    server 192.168.1.3:80 ;
  }
  #調(diào)度算法2:weight(權(quán)重).可以根據(jù)機(jī)器配置定義權(quán)重.權(quán)重越高被分配到的幾率越大
  upstream webhost {
    server 192.168.1.2:80 weight=2;
    server 192.168.1.3:80 weight=3;
  }
  #調(diào)度算法3:ip_hash. 每個(gè)請(qǐng)求按訪問IP的hash結(jié)果分配,這樣來自同一個(gè)IP的訪客固定訪問一個(gè)后端服務(wù)器,有效解決了動(dòng)態(tài)網(wǎng)頁存在的session共享問題
  upstream webhost {
    ip_hash;
    server 192.168.1.2:80 ;
    server 192.168.1.3:80 ;
  }
  #調(diào)度算法4:url_hash(需安裝第三方插件).此方法按訪問url的hash結(jié)果來分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,可以進(jìn)一步提高后端緩存服務(wù)器的效率.Nginx本身是不支持url_hash的,如果需要使用這種調(diào)度算法,必須安裝Nginx 的hash軟件包
  upstream webhost {
    server 192.168.1.2:80 ;
    server 192.168.1.3:80 ;
    hash $request_uri;
  }
  #調(diào)度算法5:fair(需安裝第三方插件).這是比上面兩個(gè)更加智能的負(fù)載均衡算法.此種算法可以依據(jù)頁面大小和加載時(shí)間長短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配.Nginx本身是不支持fair的,如果需要使用這種調(diào)度算法,必須下載Nginx的upstream_fair模塊
  #
  #虛擬主機(jī)的配置(采用調(diào)度算法3:ip_hash)
  server
  {
    listen 80;
    server_name wangying.sinaapp.com;
    #對(duì) "/" 啟用反向代理
    location / {
      proxy_pass http://webhost;
      proxy_redirect off;
      proxy_set_header X-Real-IP $remote_addr;
      #后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實(shí)IP
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      #以下是一些反向代理的配置,可選.
      proxy_set_header Host $host;
      client_max_body_size 10m; #允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)
      client_body_buffer_size 128k; #緩沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù),
      proxy_connect_timeout 90; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))
      proxy_send_timeout 90; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))
      proxy_read_timeout 90; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))
      proxy_buffer_size 4k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
      proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設(shè)置
      proxy_busy_buffers_size 64k; #高負(fù)荷下緩沖大?。╬roxy_buffers*2)
      proxy_temp_file_write_size 64k;
      #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳
    }
  }
}

測試篇
域名:wangying.sinaapp.com
分別解析到192.168.1.1
客戶訪問這三個(gè)站點(diǎn)的時(shí)候,Nginx根據(jù)客戶訪問的ip_hash值,負(fù)載均衡到Web1和Web2服務(wù)器上
虛擬主機(jī)的配置

本地單臺(tái)服務(wù)器實(shí)現(xiàn)動(dòng)靜分離多端口反向代理配置
Nginx負(fù)載均衡服務(wù)器:
IP:192.168.1.1:80
Web服務(wù)器(同臺(tái)機(jī)器)列表:
Web1:192.168.1.1:8080
Web1:192.168.1.1:8081
Web1:192.168.1.1:8082
實(shí)現(xiàn)目的:
用戶訪問http://wangying.sinaapp.com,將其負(fù)載均衡到本地服務(wù)器的8080、8081、8082端口

http
{
  #因?yàn)榉?wù)器負(fù)載均衡到本地的8080、8081、8082端口,所以本地要增開8080,8081,8082端口作腳本解析
  server {
    listen    8080;
    server_name  wangying.sinaapp.com;
    root /mnt/hgfs/vmhtdocs/fastdfs/;

    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;
    }
    #由于下面80端口可知,8080,8081,8082只負(fù)責(zé)php動(dòng)態(tài)程序解析,所以靜態(tài)文件配置就不用設(shè)置了
  }
  server {
    listen    8081;
    server_name  wangying.sinaapp.com;
    root /mnt/hgfs/vmhtdocs/fastdfs/;
    index index.php index.html index.htm;
    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;
    }
  }
  #8082的可仿照上面的server配置只是修改listen即可
  #
  #本地多端口負(fù)載均衡配置#
  #因?yàn)槭且慌_(tái)服務(wù)器,所以可以127.0.0.1代替其內(nèi)網(wǎng)ip
  #upstream 后面的主機(jī)名只是一個(gè)標(biāo)識(shí)而已,可以是某個(gè)詞語,也可以是域名,它與 proxy_pass http://webhost 相對(duì)應(yīng)相同即可
  upstream webhost {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
  }
  #本地80端口,接受請(qǐng)求做負(fù)載均衡
  server
  {
    listen 80;
    server_name wangying.sinaapp.com;
    #本地動(dòng)靜分離反向代理配置
    #所有php的頁面均交由本地fastcgi處理
    location ~ \.php$ {
      proxy_pass http://webhost;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    #所有靜態(tài)文件由nginx直接讀取
    #圖片緩存時(shí)間設(shè)置
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
      expires 10d;
    }
    #JS和CSS緩存時(shí)間設(shè)置
    location ~ .*\.(js|css)?$ {
      expires 1h;
    }
  }

下面是其他網(wǎng)友的補(bǔ)充

一、主配置段

1、正常運(yùn)行必備的配置
#運(yùn)行用戶和組,組身份可以省略
user nginx nginx;

#指定nginx守護(hù)進(jìn)程的pid文件
pid path/to/nginx.pid;

#指定所有worker進(jìn)程所能打開的最大文件句柄數(shù)
worker_rlimit_nofile 100000;

2、性能優(yōu)化相關(guān)的配置

#worker進(jìn)程的個(gè)數(shù),通常應(yīng)該略少于CPU物理核心數(shù),也可以使用auto自動(dòng)獲取
worker_processes auto;

#CPU的親緣性綁定(同樣是無法避免CPU的上下文的切換的)
#優(yōu)點(diǎn):提升緩存的命中率
#context switch:會(huì)產(chǎn)生CPU不必要的消耗

#http://blog.chinaunix.net/uid-20662363-id-2953741.html
work_cpu_affinity  00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

#計(jì)時(shí)器解析度(請(qǐng)求到達(dá)nginx,nginx相應(yīng)用戶請(qǐng)求后,要獲取系統(tǒng)時(shí)間并記錄日志,高并發(fā)的時(shí)候可能每秒鐘獲取很多很多次)
#降低此值,可以減少gettimeofday()系統(tǒng)調(diào)用的次數(shù)
timer_resolution 100ms;

#指明worker進(jìn)程的nice值:數(shù)字越小,優(yōu)先級(jí)越高
#nice值范圍:-20,19
#對(duì)應(yīng)的優(yōu)先級(jí):100,139
worker_priority number;

二、事件相關(guān)的配置

events {
    #master調(diào)度用戶請(qǐng)求至個(gè)worker進(jìn)程時(shí)使用的負(fù)載均衡鎖:on表示能讓多個(gè)worker輪流地、序列化的響應(yīng)新請(qǐng)求
    accept_mutex {off|on}
   
    #延遲等待時(shí)間,默認(rèn)為500ms
    accept_mutex_delay time;
   
    #accept_mutex用到的鎖文件路徑
    lock_file file;
   
    #指明使用的時(shí)間模型:建議讓Nginx自行選擇
    use [epoll|rtsig|select|poll];
   
    #單個(gè)worker進(jìn)程打開的最大并發(fā)連接數(shù),worker_processes*worker_connections
    worker_connections 2048;
   
    #告訴nginx收到一個(gè)新鏈接通知后接受盡可能多的鏈接
    multi_accept on;   
}

三、用于調(diào)試、定位問題
#是否以守護(hù)進(jìn)程方式運(yùn)行nginx;調(diào)試時(shí)應(yīng)該設(shè)置為off
daemon {on|off}

#是否以master/worker模型來運(yùn)行;調(diào)試時(shí)可以設(shè)置為off
master_process {on|off}

#error_log 位置 級(jí)別,若要使用debug,需要在編譯nginx時(shí)使用--with-debug選項(xiàng)
error_log file | stderr | syslog:server=address[,parameter=value] | memory:size [debug|info|notice|warn|error|crit|alert|emerg];

總結(jié):常需要調(diào)整的參數(shù):worker_processes, worker_connections,work_cpu_affinity,worker_priority
新改動(dòng)配置生效方式:
nginx -s reload其他參數(shù)stop,quit,reopen也可以使用nginx -h查看到

四、nginx作為web服務(wù)器使用的配置
http {}:由ngx_http_core_module模塊所引入
配置框架:
http {
    upstream {
        ...
    }
    server {
        location URL {
            root "/path/to/somedir"
            ...
        }#類似于httpd中的<Location>,用于定義URL與本地文件系統(tǒng)的映射關(guān)系
        location URL {
            if ... {
                ...
            }
        }
    }#每個(gè)server類似于httpd中的一個(gè)<VirtualHost>
    server {
        ...
    }
}
注意:與http相關(guān)的額指令僅能夠防止與http、server、location、upstream、if上下文,但有些指令僅應(yīng)用于這5種上下文的某些種。

http {
    #打開或關(guān)閉錯(cuò)誤頁面中的nginx版本號(hào)
    server_tokens on;
    #!server_tag on;
    #!server_info on;
   
    #優(yōu)化磁盤IO設(shè)置,指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,普通應(yīng)用設(shè)為on,下載等磁盤IO高的應(yīng)用,可設(shè)為off
    sendfile on;
    #設(shè)置nginx在一個(gè)數(shù)據(jù)包里發(fā)送所有頭文件,而不是一個(gè)接一個(gè)的發(fā)送
    tcp_nopush on;
    #設(shè)置nginx不要緩存數(shù)據(jù),而是一段一段的發(fā)送,
   
    #長連接的超時(shí)時(shí)長,默認(rèn)為75s
    keepalive_timeout 30;
    #在一個(gè)長連接所能夠允許請(qǐng)求的最大資源數(shù)
    keepalive_requests 20;
    #為制定類型的User Agent禁用長連接
    keepalive_disable [msie6|safari|none];
    #是否對(duì)長連接使用TCP_NODELAY選項(xiàng),不將多個(gè)小文件合并傳輸
    tcp_nodelay on;
    #讀取http請(qǐng)求報(bào)文首部的超時(shí)時(shí)長
    client_header_timeout #;
    #讀取http請(qǐng)求報(bào)文body部分的超時(shí)時(shí)長
    client_body_timeout #;
    #發(fā)送響應(yīng)報(bào)文的超時(shí)時(shí)長
    send_timeout #;
   
    #設(shè)置用戶保存各種key的共享內(nèi)存的參數(shù),5m指的是5兆
    limit_conn_zone $binary_remote_addr zone=addr:5m;
    #為給定的key設(shè)置最大的連接數(shù),這里的key是addr,設(shè)定的值是100,就是說允許每一個(gè)IP地址最多同時(shí)打開100個(gè)連接
    limit_conn addr 100;

    #include指在當(dāng)前文件中包含另一個(gè)文件內(nèi)容
    include mime.types;
    #設(shè)置文件使用默認(rèn)的mine-type
    default_type text/html;
    #設(shè)置默認(rèn)字符集
    charset UTF-8;

    #設(shè)置nginx采用gzip壓縮的形式發(fā)送數(shù)據(jù),減少發(fā)送數(shù)據(jù)量,但會(huì)增加請(qǐng)求處理時(shí)間及CPU處理時(shí)間,需要權(quán)衡
    gzip on;
    #加vary給代理服務(wù)器使用,針對(duì)有的瀏覽器支持壓縮,有個(gè)不支持,根據(jù)客戶端的HTTP頭來判斷是否需要壓縮
    gzip_vary on;
    #nginx在壓縮資源之前,先查找是否有預(yù)先gzip處理過的資源
    #!gzip_static on;
    #為指定的客戶端禁用gzip功能
    gzip_disable "MSIE[1-6]\.";
    #允許或禁止壓縮基于請(qǐng)求和相應(yīng)的響應(yīng)流,any代表壓縮所有請(qǐng)求
    gzip_proxied any;
    #設(shè)置對(duì)數(shù)據(jù)啟用壓縮的最少字節(jié)數(shù),如果請(qǐng)求小于10240字節(jié)則不壓縮,會(huì)影響請(qǐng)求速度
    gzip_min_length 10240;
    #設(shè)置數(shù)據(jù)壓縮等級(jí),1-9之間,9最慢壓縮比最大
    gzip_comp_level 2;
    #設(shè)置需要壓縮的數(shù)據(jù)格式
    gzip_types text/plain text/css text/xml text/javascript  application/json application/x-javascript application/xml application/xml+rss;

    #開發(fā)緩存的同時(shí)也指定了緩存文件的最大數(shù)量,20s如果文件沒有請(qǐng)求則刪除緩存
    open_file_cache max=100000 inactive=20s;
   
    #指多長時(shí)間檢查一次緩存的有效信息
    open_file_cache_valid 60s;
   
    #文件緩存最小的訪問次數(shù),只有訪問超過5次的才會(huì)被緩存
    open_file_cache_min_uses 5;
   
    #當(dāng)搜索一個(gè)文件時(shí)是否緩存錯(cuò)誤信息
    open_file_cache_errors on;

    #允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)
    client_max_body_size 8m;
   
    #沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù)
    client_header_buffer_size 32k;
   
    #引用/etc/nginx/vhosts下的所有配置文件,如果主機(jī)名眾多的情況下可以每個(gè)主機(jī)名建立一個(gè)文件,以方便管理
    include /etc/nginx/vhosts/*;
}

五、虛擬主機(jī)設(shè)定模塊
#負(fù)載均衡服務(wù)器列表(本人通常把負(fù)載均衡類別配置在相應(yīng)的虛擬主機(jī)的配置文件中)
upstream fansik {
    #后端服務(wù)器訪問規(guī)則
    ip_hash;
    #weight參數(shù)表示權(quán)重值,權(quán)值越高被分配到的幾率越大
    server 192.168.1.101:8081 weight=5;
    server 192.168.1.102:8081 max_fails=3 fail_timeout=10s;
}
server {
    #監(jiān)聽80端口
    listen 80;
    #定義主機(jī)名,主機(jī)名可以有多個(gè),名稱還可以使用正則表達(dá)式(~)或通配符
    #(1)先做精確匹配檢查
    #(2)左側(cè)通配符匹配檢查:*.fansik.com
    #(3)右側(cè)通配符匹配檢查:mail.*
    #(4)正則表達(dá)式匹配檢查:如~^.*\.fansik\.com$
    #(5)detault_server
    server_name www.jb51.net;
    #設(shè)定本虛擬主機(jī)的訪問日志
    access_log logs/www.jb51.net.access.log;

    location [=|~|~*|^~] uri {...}
    功能:允許根據(jù)用戶請(qǐng)求的URI來匹配定義的個(gè)location,匹配到時(shí),此請(qǐng)求將被相應(yīng)的location配置塊中的配置所處理
    =:表示精確匹配檢查
    ~:正則表達(dá)式模式匹配檢查,區(qū)分字符大小寫
    ~*:正則表達(dá)式模式匹配檢查,不區(qū)分字符大小寫
    ^~:URI的前半部分匹配,不支持正則表達(dá)式
    !~:開頭表示區(qū)分大小寫的不匹配的正則
    !~*:開頭表示不區(qū)分大小寫的不匹配的正則
    /:通用匹配,任何請(qǐng)求都會(huì)被匹配到
    location / {
        #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
        root html;
        #定義首頁索引文件的名稱
        index index.html index.htm;
        #引用反向代理的配置,配置文件目錄根據(jù)編譯參數(shù)而定
        #如果編譯時(shí)加入了--conf-path=/etc/nginx/nginx.conf指定了配置文件的路徑那么就把proxy.conf放在/etc/nginx/目錄下
        #如果沒有制定配置文件路徑那么就把proxy.conf配置放到nginx的conf目錄下
        include proxy.conf;   
        #定義后端負(fù)載服務(wù)器組
        proxy_pass http://fansik;
    }
    alias path和root path的區(qū)別;
    location /images/ {
        root "/data/images"
    }
    //www.jb51.net/images/a.jpg <-- /data/images/images/a.jpg
    location /images/ {
        alias "/data/images/"
    }
    //www.jb51.net/images/a.jpg <-- /data/images/a.jpg
   

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

    #設(shè)定查看Nginx狀態(tài)的地址
    #只能定義在location中
    #htpasswd -c -m /etc/nginx/.htpasswd fansik(-c 參數(shù)第一次創(chuàng)建時(shí)使用)
    location /Status {
        stub_status on;
        allow all;
        #access_log off;
        #allow 192.168.1.0/24;
        #deny all;
        #auth_basic "Status";
        #auth_basic_user_file /etc/nginx/.htpasswd;
    }
    status結(jié)果實(shí)例說明:
    Active connections: 1 (當(dāng)前所有處于打開狀態(tài)的連接數(shù))
    server accepts handled requests
    174(已經(jīng)接受進(jìn)來的連接) 174(已經(jīng)處理過的連接) 492(處理的請(qǐng)求,在保持連接模式下,請(qǐng)求數(shù)可能會(huì)多于連接數(shù)量)
    Reading: 0 Writing: 1 Waiting: 0
    Reading:正處于接受請(qǐng)求狀態(tài)的連接數(shù)
    Writing:請(qǐng)求接受完成,正處于處理請(qǐng)求或發(fā)送相應(yīng)的過程中的連接數(shù)
    Waiting:保持連接模式,且處于活動(dòng)狀態(tài)的連接數(shù)
   
    #基于IP的訪問控制
    allow IP/Netmask
    deny IP/Netmask
    location ~ /\.ht {
        deny all;
    }
}

六、反向代理的配置(反向代理的配置通常放在單獨(dú)的配置文件中proxy.conf,通過include引用)

proxy_redirect off;
#后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實(shí)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;
#nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))
proxy_connect_timeout 60;
#連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))
proxy_read_timeout 120;
#后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))
proxy_send_timeout 20;
#設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffer_size 32k;
#proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設(shè)置
proxy_buffers 4 128k;
#高負(fù)荷下緩沖大小(proxy_buffers*2)
proxy_busy_buffers_size 256k;
#設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳
proxy_temp_file_write_size 256k;
#1G內(nèi)存緩沖空間,3天不用刪除,最大磁盤緩沖空間2G
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:1024m inactive=3d max_size=2g;

七、https服務(wù)的配置

server {
        listen       443 ssl;
        server_name  test.fansik.cn;
        ssl_certificate      100doc.cn.crt;
        ssl_certificate_key  100doc.cn.key;    
        ssl_session_cache    shared:SSL:1m;
        ssl_protocols SSLv2 SSLv3 TLSv1;
        ssl_session_timeout  5m;       
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers  on;      
        location / {
                root /data/app
                index  index.html index.htm;
        }
}

八、url地址重寫
rewrite regex replacment flag
例如:rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;#$1是前面括號(hào)中的內(nèi)容哦
//www.jb51.net/images/a/1.jpg --> //www.jb51.net/imgs/a/1.jpg
flag:
    last:一旦此rewrite規(guī)則重寫完成后,不再被后面其他的rewrite規(guī)則進(jìn)行處理,
    而是由User Agent重新對(duì)重寫后的URL再一次發(fā)起請(qǐng)求,并從頭開始執(zhí)行類似的過程。
    break:一旦此rewrite規(guī)則重寫完成之后,由User Agent對(duì)新的URL重新發(fā)起請(qǐng)求,
    且不會(huì)被當(dāng)前l(fā)ocation內(nèi)的任何rewrite規(guī)則過檢查
    redirect:以302響應(yīng)碼(臨時(shí)重定向)返回新的URL
    permanent:以301響應(yīng)碼(永久重定向)返回新的URL

九、if判斷
語法:if (condition) {...}
應(yīng)用環(huán)境:server,location
condition:
(1)變量名:
變量值為空串,或者以"0"開始,則為false,其他的均為true
(2)以變量為操作數(shù)構(gòu)成的比較表達(dá)式
可以使用=,!=類似的比較操作符進(jìn)行測試
(3)正則表達(dá)式的模式匹配操作
~:區(qū)分大小寫的模式匹配檢查
~*:不區(qū)分大小寫的模式匹配檢查
!~和!~*:對(duì)上面兩種測試取反
(4)測試路徑為文件可能性:-f ,~-f
(5)測試制定路徑為目錄的可能性:-d,!-d
(6)測試文件存在性:-e,!-e
(7)檢查文件是否有執(zhí)行權(quán)限:-x,!-x
例如:

if($http_user_agent ~* MSIE){
    rewrite ^(.*)$ /msie/$1 break;
}

十、防盜鏈

location ~* \.(jpg|gif|jpeg|png)$ {
    valid_referer none blocked www.jb51.net;
    if ($invalid_referer) {
        rewrite ^/ //www.jb51.net/403.html;
    }
}

總結(jié):

最后推薦一個(gè)深入學(xué)習(xí)Nginx的網(wǎng)站:

http://tengine.taobao.org/book/index.html

到此這篇關(guān)于Nginx配置參數(shù)中文說明詳解(負(fù)載均衡與反向代理)的文章就介紹到這了,更多相關(guān)Nginx參數(shù)中文解釋內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:滁州 紅河 回訪 湛江 廊坊 德州 廣安 巴彥淖爾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx配置參數(shù)中文說明詳解(負(fù)載均衡與反向代理)》,本文關(guān)鍵詞  Nginx,配置,參數(shù),中文,說明,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Nginx配置參數(shù)中文說明詳解(負(fù)載均衡與反向代理)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Nginx配置參數(shù)中文說明詳解(負(fù)載均衡與反向代理)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章