NGINX的配置文件詳解

NGINX的配置:

1.全局變量:

#Nginx的worker進程運行用戶以及用戶組

user? nobody nobody;

#Nginx開啟的進程數,建議為CPU的核數

worker_processes? 1;

#worker_processes auto;

#以下參數指定了哪個cpu分配給哪個進程,一般來說不用特殊指定。如果一定要設的話,用0和1指定分配方式.

#這樣設就是給1-4個進程分配單獨的核來運行,出現第5個進程是就是隨機分配了。eg:

worker_processes 4? ? #4核CPU

worker_cpu_affinity 0001 0010 0100 1000

#定義全局錯誤日志定義類型,[debug|info|notice|warn|crit]

error_log? logs/error.log? info;

#指定進程ID存儲文件位置

#pid? ? ? ? logs/nginx.pid;

#一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx進程數相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n的值保持一致。

#vim /etc/security/limits.conf

#? *? ? ? ? ? ? ? ? soft? ? nproc? ? ? ? ? 65535

#? *? ? ? ? ? ? ? ? hard? ? nproc? ? ? ? ? 65535

#? *? ? ? ? ? ? ? ? soft? ? nofile? ? ? ? 65535

#? *? ? ? ? ? ? ? ? hard? ? nofile? ? ? ? 65535

worker_rlimit_nofile 65535;

2.事件配置:

events {

? ? #use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

? ? use epoll;

? ? #每個進程可以處理的最大連接數,理論上每臺nginx服務器的最大連接數為worker_processes*worker_connections。理論值:worker_rlimit_nofile/worker_processes

? ? #注意:最大客戶數也由系統的可用socket連接數限制(~ 64K),所以設置不切實際的高沒什么好處

? ? worker_connections? 65535;? ?

? ? #worker工作方式:串行(一定程度降低負載,但服務器吞吐量大時,關閉使用并行方式)

? ? #multi_accept on;

}

3.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"';


? ? #定義日志的格式。后面定義要輸出的內容。

? ? #1.$remote_addr 與$http_x_forwarded_for 用以記錄客戶端的ip地址;

? ? #2.$remote_user :用來記錄客戶端用戶名稱;

? ? #3.$time_local :用來記錄訪問時間與時區;

? ? #4.$request? :用來記錄請求的url與http協議;

? ? #5.$status :用來記錄請求狀態;

? ? #6.$body_bytes_sent :記錄發送給客戶端文件主體內容大小;

? ? #7.$http_referer :用來記錄從那個頁面鏈接訪問過來的;

? ? #8.$http_user_agent :記錄客戶端瀏覽器的相關信息

? ? #連接日志的路徑,指定的日志格式放在最后。

? ? #access_log? logs/access.log? main;

? ? #只記錄更為嚴重的錯誤日志,減少IO壓力

? ? error_log logs/error.log crit;

? ? #關閉日志

? ? #access_log? off;

? ? #默認編碼

? ? #charset utf-8;

? ? #服務器名字的hash表大小

? ? server_names_hash_bucket_size 128;

? ? #客戶端請求單個文件的最大字節數

? ? client_max_body_size 8m;

? ? #指定來自客戶端請求頭的hearerbuffer大小

? ? client_header_buffer_size 32k;

? ? #指定客戶端請求中較大的消息頭的緩存最大數量和大小。

? ? large_client_header_buffers 4 64k;

? ? #開啟高效傳輸模式。

? ? sendfile? ? ? ? on;

? ? #防止網絡阻塞

? ? tcp_nopush on;

? ? tcp_nodelay on;? ?

? ? #客戶端連接超時時間,單位是秒

? ? keepalive_timeout 60;

? ? #客戶端請求頭讀取超時時間

? ? client_header_timeout 10;

? ? #設置客戶端請求主體讀取超時時間

? ? client_body_timeout 10;

? ? #響應客戶端超時時間

? ? send_timeout 10;

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

#gzip模塊設置

? ? #開啟gzip壓縮輸出

? ? gzip on;

? ? #最小壓縮文件大小

? ? gzip_min_length 1k;

? ? #壓縮緩沖區

? ? gzip_buffers 4 16k;

? ? #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)

? ? gzip_http_version 1.0;

? ? #壓縮等級 1-9 等級越高,壓縮效果越好,節約寬帶,但CPU消耗大

? ? gzip_comp_level 2;

? ? #壓縮類型,默認就已經包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。

? ? gzip_types text/plain application/x-javascript text/css application/xml;

? ? #前端緩存服務器緩存經過壓縮的頁面

? ? gzip_vary on;

4.虛擬主機基本配置

#虛擬主機定義

? ? server {

? ? ? ? #監聽端口

? ? ? ? listen? ? ? 80;

? ? ? ? #訪問域名

? ? ? ? server_name? localhost;

? ? ? ? #編碼格式,若網頁格式與此不同,將被自動轉碼

? ? ? ? #charset koi8-r;

? ? ? ? #虛擬主機訪問日志定義

? ? ? ? #access_log? logs/host.access.log? main;

? ? ? ? #對URL進行匹配

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

? ? ? ? }

#訪問URL以.php結尾則自動轉交給127.0.0.1

? ? ? ? # proxy the PHP scripts to Apache listening on 127.0.0.1:80

? ? ? ? #

? ? ? ? #location ~ \.php$ {

? ? ? ? #? ? proxy_pass? http://127.0.0.1;

? ? ? ? #}

#php腳本請求全部轉發給FastCGI處理

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

? ? ? ? #}

#禁止訪問.ht頁面 (需ngx_http_access_module模塊)

? ? ? ? # deny access to .htaccess files, if Apache's document root

? ? ? ? # concurs with nginx's one

? ? ? ? #

? ? ? ? #location ~ /\.ht {

? ? ? ? #? ? deny? all;

? ? ? ? #}

? ? }

#HTTPS虛擬主機定義

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

? ? #? ? }

? ? #}

5.NGINX狀態監控


#Nginx運行狀態,StubStatus模塊獲取Nginx自啟動的工作狀態(編譯時要開啟對應功能)

? ? ? ? #location /NginxStatus {

? ? ? ? #? ? #啟用StubStatus的工作訪問狀態? ?

? ? ? ? #? ? stub_status? ? on;

? ? ? ? #? ? #指定StubStaus模塊的訪問日志文件

? ? ? ? #? ? access_log? ? logs/Nginxstatus.log;

? ? ? ? #? ? #Nginx認證機制(需Apache的htpasswd命令生成)

? ? ? ? #? ? #auth_basic? ? "NginxStatus";

? ? ? ? #? ? #用來認證的密碼文件

? ? ? ? #? ? #auth_basic_user_file? ? ../htpasswd;? ?

? ? ? ? #}

訪問:http://IP/NginxStatus(測試就不加密碼驗證相關)


6.反向代理

#以下配置追加在HTTP的全局變量中

#nginx跟后端服務器連接超時時間(代理連接超時)

proxy_connect_timeout? ? ? 5;

#后端服務器數據回傳時間(代理發送超時)

proxy_send_timeout? ? ? ? 5;

#連接成功后,后端服務器響應時間(代理接收超時)

proxy_read_timeout? ? ? ? 60;

#設置代理服務器(nginx)保存用戶頭信息的緩沖區大小

proxy_buffer_size? ? ? ? ? 16k;

#proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置

proxy_buffers? ? ? ? ? ? ? 4 32k;

#高負荷下緩沖大小(proxy_buffers*2)

proxy_busy_buffers_size? ? 64k;

#設定緩存文件夾大小,大于這個值,將從upstream服務器傳

proxy_temp_file_write_size 64k;

#反向代理緩存目錄

proxy_cache_path /data/proxy/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=1g;

#levels=1:2 設置目錄深度,第一層目錄是1個字符,第2層是2個字符

#keys_zone:設置web緩存名稱和內存緩存空間大小

#inactive:自動清除緩存文件時間。

#max_size:硬盤空間最大可使用值。

#指定臨時緩存文件的存儲路徑(路徑需和上面路徑在同一分區)

proxy_temp_path /data/proxy/temp

#服務配置

server {

? ? #偵聽的80端口

? ? listen? ? ? 80;

? ? server_name? localhost;

? ? location / {

? ? ? ? #反向代理緩存設置命令(proxy_cache zone|off,默認關閉所以要設置)

? ? ? ? proxy_cache cache_one;

? ? ? ? #對不同的狀態碼緩存不同時間

? ? ? ? proxy_cache_valid 200 304 12h;

? ? ? ? #設置以什么樣參數獲取緩存文件名

? ? ? ? proxy_cache_key $host$uri$is_args$args;

? ? ? ? #后7端的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_pass? http://IP;

? ? ? ? #文件過期時間控制

? ? ? ? expires? ? 1d;

? ? }

? ? #配置手動清楚緩存(實現此功能需第三方模塊 ngx_cache_purge)

? ? #http://www.123.com/2017/0316/17.html訪問

? ? #http://www.123.com/purge/2017/0316/17.html清楚URL緩存

? ? location ~ /purge(/.*) {

? ? ? ? allow? ? 127.0.0.1;

? ? ? ? deny? ? all;

? ? ? ? proxy_cache_purge? ? cache_one? ? $host$1$is_args$args;

? ? }

? ? #設置擴展名以.jsp、.php、.jspx結尾的動態應用程序不做緩存

? ? location ~.*\.(jsp|php|jspx)?$ {

? ? ? ? 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_pass http://http://IP;

? ? }

7.負載均衡

#負載均衡服務器池

upstream my_server_pool {

? ? #調度算法

? ? #1.輪循(默認)(weight輪循權值)

? ? #2.ip_hash:根據每個請求訪問IP的hash結果分配。(會話保持)

? ? #3.fair:根據后端服務器響應時間最短請求。(upstream_fair模塊)

? ? #4.url_hash:根據訪問的url的hash結果分配。(需hash軟件包)

? ? #參數:

? ? #down:表示不參與負載均衡

? ? #backup:備份服務器

? ? #max_fails:允許最大請求錯誤次數

? ? #fail_timeout:請求失敗后暫停服務時間。

? ? server 192.168.1.109:80 weight=1 max_fails=2 fail_timeout=30;

? ? server 192.168.1.108:80 weight=2 max_fails=2 fail_timeout=30;

}

#負載均衡調用

server {

? ? ...

? ? location / {

? ? proxy_pass http://my_server_pool;

? ? }

}

8.URL重寫

#根據不同的瀏覽器URL重寫

? if($http_user_agent ~ Firefox){

? rewrite ^(.*)$? /firefox/$1 break;

? }

? if($http_user_agent ~ MSIE){

? rewrite ^(.*)$? /msie/$1 break;

? }

? #實現域名跳轉

? location / {

? rewrite ^/(.*)$ https://web8.example.com$1 permanent;

? }

9.IP限制

#限制IP訪問

location / {

? ? deny 192.168.0.2;

? ? allow 192.168.0.0/24;

? ? allow 192.168.1.1;

? ? deny all;

}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • Page 1:nginx 服務器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,564評論 1 41
  • 1.簡介: ? Nginx:engine X ,2002年,開源,商業版? http協議:web服務器(類似于ht...
    尛尛大尹閱讀 1,889評論 0 3
  • Nginx簡介 解決基于進程模型產生的C10K問題,請求時即使無狀態連接如web服務都無法達到并發響應量級一萬的現...
    魏鎮坪閱讀 2,029評論 0 9
  • 一、安裝Nginx: 1、解決依賴關系 yum groupinstall "Development Tools" ...
    不排版閱讀 874評論 0 0
  • 如果說遇見的話 或許我抱有最好的狀態與幻想 但杯中的茶葉會沉底 熱氣騰騰已不在 嘗一口,苦 來一杯熱檸檬茶吧 但要...
    珂柡閱讀 185評論 0 1