小編給大家分享一下Nginx配置參數(shù)中文說(shuō)明的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到翁源網(wǎng)站設(shè)計(jì)與翁源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋翁源地區(qū)。
PS:最近在看<<高性能Linux服務(wù)器構(gòu)建實(shí)戰(zhàn)>>的Nginx章節(jié),對(duì)其nginx介紹的非常詳細(xì),現(xiàn)把經(jīng)常用到的Nginx配置參數(shù)中文說(shuō)明摘錄和nginx做負(fù)載均衡的本人真實(shí)演示實(shí)例抄錄下來(lái)以便以后查看!
Nginx配置參數(shù)中文詳細(xì)說(shuō)明
#定義Nginx運(yùn)行的用戶和用戶組
user www www;
#
#nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù).
worker_processes 8;
#
#全局錯(cuò)誤日志定義類(lèi)型,[ 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)程打開(kāi)的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開(kāi)文件數(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ò)展名與文件類(lèi)型映射表
default_type application/octet-stream; #默認(rèn)文件類(lèi)型
#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)求緩
#
#開(kāi)啟目錄列表訪問(wèn),合適下載服務(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; #開(kāi)啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來(lái)輸出文件,對(duì)于普通應(yīng)用設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤(pán)與網(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í)間,在超過(guò)這個(gè)時(shí)間后服務(wù)器會(huì)關(guān)閉該鏈接
#
#FastCGI相關(guān)參數(shù)是為了改善網(wǎng)站的性能:減少資源占用,提高訪問(wèn)速度.下面參數(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; #開(kāi)啟gzip壓縮輸出
gzip_min_length 1k; #允許壓縮的頁(yè)面的最小字節(jié)數(shù),頁(yè)面字節(jié)數(shù)從header偷得content-length中獲取.默認(rèn)是0,不管頁(yè)面多大都進(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)存空間來(lá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;
#壓縮類(lèi)型,默認(rèn)就已經(jīng)包含text/html,所以下面就不用再寫(xiě)了,寫(xiě)上去也不會(huì)有問(wèn)題,但是會(huì)有一個(gè)warn.
gzip_vary on;#選項(xiàng)可以讓前端的緩存服務(wù)器緩存經(jīng)過(guò)gzip壓縮的頁(yè)面.例如:用squid緩存經(jīng)過(guò)nginx壓縮的數(shù)據(jù)
#
#開(kāi)啟限制IP連接數(shù)的時(shí)候需要使用
#limit_zone crawler $binary_remote_addr 10m;
#
##upstream的負(fù)載均衡,四種調(diào)度算法(下例主講)##
#
#虛擬主機(jī)的配置
server
{
#監(jiān)聽(tīng)端口
listen 80;
#域名可以有多個(gè),用空格隔開(kāi)
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ī)的訪問(wèn)日志
access_log /var/log/nginx/access.log access;
#
#設(shè)定查看Nginx狀態(tài)的地址.StubStatus模塊能夠獲取Nginx自上次啟動(dòng)以來(lái)的工作狀態(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工具來(lái)產(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)目的:用戶訪問(wèn)192.168.1.1服務(wù)器時(shí),通過(guò)Nginx負(fù)載均衡到Web1和Web2服務(wù)器
http { ##upstream的負(fù)載均衡,四種調(diào)度算法## #調(diào)度算法1:輪詢(xún).每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某臺(tái)服務(wù)器宕機(jī),故障系統(tǒng)被自動(dòng)剔除,使用戶訪問(wèn)不受影響 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)求按訪問(wèn)IP的hash結(jié)果分配,這樣來(lái)自同一個(gè)IP的訪客固定訪問(wèn)一個(gè)后端服務(wù)器,有效解決了動(dòng)態(tài)網(wǎng)頁(yè)存在的session共享問(wèn)題 upstream webhost { ip_hash; server 192.168.1.2:80 ; server 192.168.1.3:80 ; } #調(diào)度算法4:url_hash(需安裝第三方插件).此方法按訪問(wèn)url的hash結(jié)果來(lái)分配請(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ù)頁(yè)面大小和加載時(shí)間長(zhǎng)短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(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ù)器可以通過(guò)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)頁(yè)平均在32k以下的設(shè)置 proxy_busy_buffers_size 64k; #高負(fù)荷下緩沖大?。╬roxy_buffers*2) proxy_temp_file_write_size 64k; #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳 } } }
測(cè)試篇
域名:wangying.sinaapp.com
分別解析到192.168.1.1
客戶訪問(wèn)這三個(gè)站點(diǎn)的時(shí)候,Nginx根據(jù)客戶訪問(wèn)的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)目的:
用戶訪問(wèn)http://wangying.sinaapp.com,將其負(fù)載均衡到本地服務(wù)器的8080、8081、8082端口
http { #因?yàn)榉?wù)器負(fù)載均衡到本地的8080、8081、8082端口,所以本地要增開(kāi)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è)詞語(yǔ),也可以是域名,它與 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的頁(yè)面均交由本地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)程所能打開(kāi)的最大文件句柄數(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的親緣性綁定(同樣是無(wú)法避免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)程打開(kāi)的最大并發(fā)連接數(shù),worker_processes*worker_connections
worker_connections 2048;
#告訴nginx收到一個(gè)新鏈接通知后接受盡可能多的鏈接
multi_accept on;
}
三、用于調(diào)試、定位問(wèn)題
#是否以守護(hù)進(jìn)程方式運(yùn)行nginx;調(diào)試時(shí)應(yīng)該設(shè)置為off
daemon {on|off}
#是否以master/worker模型來(lái)運(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"
...
}#類(lèi)似于httpd中的<Location>,用于定義URL與本地文件系統(tǒng)的映射關(guān)系
location URL {
if ... {
...
}
}
}#每個(gè)server類(lèi)似于httpd中的一個(gè)<VirtualHost>
server {
...
}
}
注意:與http相關(guān)的額指令僅能夠防止與http、server、location、upstream、if上下文,但有些指令僅應(yīng)用于這5種上下文的某些種。
http {
#打開(kāi)或關(guān)閉錯(cuò)誤頁(yè)面中的nginx版本號(hào)
server_tokens on;
#!server_tag on;
#!server_info on;
#優(yōu)化磁盤(pán)IO設(shè)置,指定nginx是否調(diào)用sendfile函數(shù)來(lái)輸出文件,普通應(yīng)用設(shè)為on,下載等磁盤(pán)IO高的應(yīng)用,可設(shè)為off
sendfile on;
#設(shè)置nginx在一個(gè)數(shù)據(jù)包里發(fā)送所有頭文件,而不是一個(gè)接一個(gè)的發(fā)送
tcp_nopush on;
#設(shè)置nginx不要緩存數(shù)據(jù),而是一段一段的發(fā)送,
#長(zhǎng)連接的超時(shí)時(shí)長(zhǎng),默認(rèn)為75s
keepalive_timeout 30;
#在一個(gè)長(zhǎng)連接所能夠允許請(qǐng)求的最大資源數(shù)
keepalive_requests 20;
#為制定類(lèi)型的User Agent禁用長(zhǎng)連接
keepalive_disable [msie6|safari|none];
#是否對(duì)長(zhǎng)連接使用TCP_NODELAY選項(xiàng),不將多個(gè)小文件合并傳輸
tcp_nodelay on;
#讀取http請(qǐng)求報(bào)文首部的超時(shí)時(shí)長(zhǎng)
client_header_timeout #;
#讀取http請(qǐng)求報(bào)文body部分的超時(shí)時(shí)長(zhǎng)
client_body_timeout #;
#發(fā)送響應(yīng)報(bào)文的超時(shí)時(shí)長(zhǎ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,就是說(shuō)允許每一個(gè)IP地址最多同時(shí)打開(kāi)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頭來(lái)判斷是否需要壓縮
gzip_vary on;
#nginx在壓縮資源之前,先查找是否有預(yù)先gzip處理過(guò)的資源
#!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;
#開(kāi)發(fā)緩存的同時(shí)也指定了緩存文件的最大數(shù)量,20s如果文件沒(méi)有請(qǐng)求則刪除緩存
open_file_cache max=100000 inactive=20s;
#指多長(zhǎng)時(shí)間檢查一次緩存的有效信息
open_file_cache_valid 60s;
#文件緩存最小的訪問(wèn)次數(shù),只有訪問(wèn)超過(guò)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ù)載均衡類(lèi)別配置在相應(yīng)的虛擬主機(jī)的配置文件中)
upstream fansik {
#后端服務(wù)器訪問(wèn)規(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)聽(tīng)80端口
listen 80;
#定義主機(jī)名,主機(jī)名可以有多個(gè),名稱(chēng)還可以使用正則表達(dá)式(~)或通配符
#(1)先做精確匹配檢查
#(2)左側(cè)通配符匹配檢查:*.fansik.com
#(3)右側(cè)通配符匹配檢查:mail.*
#(4)正則表達(dá)式匹配檢查:如~^.*\.fansik\.com$
#(5)detault_server
server_name www.jb51.net;
#設(shè)定本虛擬主機(jī)的訪問(wèn)日志
access_log logs/www.jb51.net.access.log;
location [=|~|~*|^~] uri {...}
功能:允許根據(jù)用戶請(qǐng)求的URI來(lái)匹配定義的個(gè)location,匹配到時(shí),此請(qǐng)求將被相應(yīng)的location配置塊中的配置所處理
=:表示精確匹配檢查
~:正則表達(dá)式模式匹配檢查,區(qū)分字符大小寫(xiě)
~*:正則表達(dá)式模式匹配檢查,不區(qū)分字符大小寫(xiě)
^~:URI的前半部分匹配,不支持正則表達(dá)式
!~:開(kāi)頭表示區(qū)分大小寫(xiě)的不匹配的正則
!~*:開(kāi)頭表示不區(qū)分大小寫(xiě)的不匹配的正則
/:通用匹配,任何請(qǐng)求都會(huì)被匹配到
location / {
#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
root html;
#定義首頁(yè)索引文件的名稱(chēng)
index index.html index.htm;
#引用反向代理的配置,配置文件目錄根據(jù)編譯參數(shù)而定
#如果編譯時(shí)加入了--conf-path=/etc/nginx/nginx.conf指定了配置文件的路徑那么就把proxy.conf放在/etc/nginx/目錄下
#如果沒(méi)有制定配置文件路徑那么就把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ò)誤提示頁(yè)面
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í)例說(shuō)明:
Active connections: 1 (當(dāng)前所有處于打開(kāi)狀態(tài)的連接數(shù))
server accepts handled requests
174(已經(jīng)接受進(jìn)來(lái)的連接) 174(已經(jīng)處理過(guò)的連接) 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)的過(guò)程中的連接數(shù)
Waiting:保持連接模式,且處于活動(dòng)狀態(tài)的連接數(shù)
#基于IP的訪問(wèn)控制
allow IP/Netmask
deny IP/Netmask
location ~ /\.ht {
deny all;
}
}
六、反向代理的配置(反向代理的配置通常放在單獨(dú)的配置文件中proxy.conf,通過(guò)include引用)
proxy_redirect off;
#后端的Web服務(wù)器可以通過(guò)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)頁(yè)平均在32k以下的設(shè)置
proxy_buffers 4 128k;
#高負(fù)荷下緩沖大?。╬roxy_buffers*2)
proxy_busy_buffers_size 256k;
#設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳
proxy_temp_file_write_size 256k;
#1G內(nèi)存緩沖空間,3天不用刪除,最大磁盤(pán)緩沖空間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地址重寫(xiě)
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ī)則重寫(xiě)完成后,不再被后面其他的rewrite規(guī)則進(jìn)行處理,
而是由User Agent重新對(duì)重寫(xiě)后的URL再一次發(fā)起請(qǐng)求,并從頭開(kāi)始執(zhí)行類(lèi)似的過(guò)程。
break:一旦此rewrite規(guī)則重寫(xiě)完成之后,由User Agent對(duì)新的URL重新發(fā)起請(qǐng)求,
且不會(huì)被當(dāng)前l(fā)ocation內(nèi)的任何rewrite規(guī)則過(guò)檢查
redirect:以302響應(yīng)碼(臨時(shí)重定向)返回新的URL
permanent:以301響應(yīng)碼(永久重定向)返回新的URL
九、if判斷
語(yǔ)法:if (condition) {...}
應(yīng)用環(huán)境:server,location
condition:
(1)變量名:
變量值為空串,或者以"0"開(kāi)始,則為false,其他的均為true
(2)以變量為操作數(shù)構(gòu)成的比較表達(dá)式
可以使用=,!=類(lèi)似的比較操作符進(jìn)行測(cè)試
(3)正則表達(dá)式的模式匹配操作
~:區(qū)分大小寫(xiě)的模式匹配檢查
~*:不區(qū)分大小寫(xiě)的模式匹配檢查
!~和!~*:對(duì)上面兩種測(cè)試取反
(4)測(cè)試路徑為文件可能性:-f ,~-f
(5)測(cè)試制定路徑為目錄的可能性:-d,!-d
(6)測(cè)試文件存在性:-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;
}
}
看完了這篇文章,相信你對(duì)“Nginx配置參數(shù)中文說(shuō)明的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站題目:Nginx配置參數(shù)中文說(shuō)明的示例分析
網(wǎng)頁(yè)URL:http://www.rwnh.cn/article8/gshsop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、虛擬主機(jī)、商城網(wǎng)站、App開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)