溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nginx配置參數(shù)中文說明的示例分析

發(fā)布時間:2021-06-08 11:41:34 來源:億速云 閱讀:185 作者:小新 欄目:服務(wù)器

小編給大家分享一下Nginx配置參數(shù)中文說明的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

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

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

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

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

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

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

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

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

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

http
{
  #因為服務(wù)器負載均衡到本地的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只負責php動態(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即可
  #
  #本地多端口負載均衡配置#
  #因為是一臺服務(wù)器,所以可以127.0.0.1代替其內(nèi)網(wǎng)ip
  #upstream 后面的主機名只是一個標識而已,可以是某個詞語,也可以是域名,它與 proxy_pass http://webhost 相對應(yīng)相同即可
  upstream webhost {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
  }
  #本地80端口,接受請求做負載均衡
  server
  {
    listen 80;
    server_name wangying.sinaapp.com;
    #本地動靜分離反向代理配置
    #所有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è)置
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
      expires 10d;
    }
    #JS和CSS緩存時間設(shè)置
    location ~ .*\.(js|css)?$ {
      expires 1h;
    }
  }

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

一、主配置段

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

#指定nginx守護進程的pid文件
pid path/to/nginx.pid;

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

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

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

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

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

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

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

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

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

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

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

#error_log 位置 級別,若要使用debug,需要在編譯nginx時使用--with-debug選項
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
新改動配置生效方式:
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 ... {
                ...
            }
        }
    }#每個server類似于httpd中的一個<VirtualHost>
    server {
        ...
    }
}
注意:與http相關(guān)的額指令僅能夠防止與http、server、location、upstream、if上下文,但有些指令僅應(yīng)用于這5種上下文的某些種。

http {
    #打開或關(guān)閉錯誤頁面中的nginx版本號
    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在一個數(shù)據(jù)包里發(fā)送所有頭文件,而不是一個接一個的發(fā)送
    tcp_nopush on;
    #設(shè)置nginx不要緩存數(shù)據(jù),而是一段一段的發(fā)送,
   
    #長連接的超時時長,默認為75s
    keepalive_timeout 30;
    #在一個長連接所能夠允許請求的最大資源數(shù)
    keepalive_requests 20;
    #為制定類型的User Agent禁用長連接
    keepalive_disable [msie6|safari|none];
    #是否對長連接使用TCP_NODELAY選項,不將多個小文件合并傳輸
    tcp_nodelay on;
    #讀取http請求報文首部的超時時長
    client_header_timeout #;
    #讀取http請求報文body部分的超時時長
    client_body_timeout #;
    #發(fā)送響應(yīng)報文的超時時長
    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,就是說允許每一個IP地址最多同時打開100個連接
    limit_conn addr 100;

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

    #設(shè)置nginx采用gzip壓縮的形式發(fā)送數(shù)據(jù),減少發(fā)送數(shù)據(jù)量,但會增加請求處理時間及CPU處理時間,需要權(quán)衡
    gzip on;
    #加vary給代理服務(wù)器使用,針對有的瀏覽器支持壓縮,有個不支持,根據(jù)客戶端的HTTP頭來判斷是否需要壓縮
    gzip_vary on;
    #nginx在壓縮資源之前,先查找是否有預先gzip處理過的資源
    #!gzip_static on;
    #為指定的客戶端禁用gzip功能
    gzip_disable "MSIE[1-6]\.";
    #允許或禁止壓縮基于請求和相應(yīng)的響應(yīng)流,any代表壓縮所有請求
    gzip_proxied any;
    #設(shè)置對數(shù)據(jù)啟用壓縮的最少字節(jié)數(shù),如果請求小于10240字節(jié)則不壓縮,會影響請求速度
    gzip_min_length 10240;
    #設(shè)置數(shù)據(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ù)量,20s如果文件沒有請求則刪除緩存
    open_file_cache max=100000 inactive=20s;
   
    #指多長時間檢查一次緩存的有效信息
    open_file_cache_valid 60s;
   
    #文件緩存最小的訪問次數(shù),只有訪問超過5次的才會被緩存
    open_file_cache_min_uses 5;
   
    #當搜索一個文件時是否緩存錯誤信息
    open_file_cache_errors on;

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

五、虛擬主機設(shè)定模塊
#負載均衡服務(wù)器列表(本人通常把負載均衡類別配置在相應(yīng)的虛擬主機的配置文件中)
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;
    #定義主機名,主機名可以有多個,名稱還可以使用正則表達式(~)或通配符
    #(1)先做精確匹配檢查
    #(2)左側(cè)通配符匹配檢查:*.fansik.com
    #(3)右側(cè)通配符匹配檢查:mail.*
    #(4)正則表達式匹配檢查:如~^.*\.fansik\.com$
    #(5)detault_server
    server_name www.jb51.net;
    #設(shè)定本虛擬主機的訪問日志
    access_log logs/www.jb51.net.access.log;

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

    #定義錯誤提示頁面
    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)建時使用)
    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é)果實例說明:
    Active connections: 1 (當前所有處于打開狀態(tài)的連接數(shù))
    server accepts handled requests
    174(已經(jīng)接受進來的連接) 174(已經(jīng)處理過的連接) 492(處理的請求,在保持連接模式下,請求數(shù)可能會多于連接數(shù)量)
    Reading: 0 Writing: 1 Waiting: 0
    Reading:正處于接受請求狀態(tài)的連接數(shù)
    Writing:請求接受完成,正處于處理請求或發(fā)送相應(yīng)的過程中的連接數(shù)
    Waiting:保持連接模式,且處于活動狀態(tài)的連接數(shù)
   
    #基于IP的訪問控制
    allow IP/Netmask
    deny IP/Netmask
    location ~ /\.ht {
        deny all;
    }
}

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

proxy_redirect off;
#后端的Web服務(wù)器可以通過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;
#nginx跟后端服務(wù)器連接超時時間(代理連接超時)
proxy_connect_timeout 60;
#連接成功后,后端服務(wù)器響應(yīng)時間(代理接收超時)
proxy_read_timeout 120;
#后端服務(wù)器數(shù)據(jù)回傳時間(代理發(fā)送超時)
proxy_send_timeout 20;
#設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffer_size 32k;
#proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設(shè)置
proxy_buffers 4 128k;
#高負荷下緩沖大?。╬roxy_buffers*2)
proxy_busy_buffers_size 256k;
#設(shè)定緩存文件夾大小,大于這個值,將從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是前面括號中的內(nèi)容哦
//www.jb51.net/images/a/1.jpg --> //www.jb51.net/imgs/a/1.jpg
flag:
    last:一旦此rewrite規(guī)則重寫完成后,不再被后面其他的rewrite規(guī)則進行處理,
    而是由User Agent重新對重寫后的URL再一次發(fā)起請求,并從頭開始執(zhí)行類似的過程。
    break:一旦此rewrite規(guī)則重寫完成之后,由User Agent對新的URL重新發(fā)起請求,
    且不會被當前l(fā)ocation內(nèi)的任何rewrite規(guī)則過檢查
    redirect:以302響應(yīng)碼(臨時重定向)返回新的URL
    permanent:以301響應(yīng)碼(永久重定向)返回新的URL

九、if判斷
語法:if (condition) {...}
應(yīng)用環(huán)境:server,location
condition:
(1)變量名:
變量值為空串,或者以"0"開始,則為false,其他的均為true
(2)以變量為操作數(shù)構(gòu)成的比較表達式
可以使用=,!=類似的比較操作符進行測試
(3)正則表達式的模式匹配操作
~:區(qū)分大小寫的模式匹配檢查
~*:不區(qū)分大小寫的模式匹配檢查
!~和!~*:對上面兩種測試取反
(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;
    }
}

看完了這篇文章,相信你對“Nginx配置參數(shù)中文說明的示例分析”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI