深入Nginx之《常用參數配置技巧》

常見參配置實戰技巧

????下面會講解實戰中應該怎么配置更為合理。


?

1.user

????默認是nobody,如果使用nobody,Nginx在運行過程中會出現很多操作沒有權限,比如寫硬盤。一般都是用低于root級別的用戶,比如www,并且可以在linux下設置www禁止ssh登錄服務器,提高安全性;

?

2.worker_processes

????代表Nginx worker的進程數,一般情況下建議和機器的核數相同,也可以配置 worker_processes auto ; (Nginx1.2.5版本添加的) 自動根據cpu核數進行進程啟動;

????但是實際應用中,服務器不一定只跑了Nginx,需要考慮機器資源會被分配到哪些服務上,避免進程啟動過多,和其他服務競爭cpu,導致過多上下文切換;

?

3.worker_cpu_affinity auto

Nginx 1.9.10添加的功能,表示可以根據服務器的核數自動配cpu親緣性,提升Nginx的性能;

?

4、error_log & access_log

關于日志記錄的,error_log 配置為error級別, 減少不必要的日志記錄, 如果是測試環境可以開啟info級別。日志記錄需要考慮硬盤的獨立性,不要使用linux的根分區,避免大量的io影響Linux服務器吞吐能力。單獨掛載一個磁盤,獨立使用io;

另外硬盤的使用壽命需要注意,關注message的日志,定期檢查硬盤(Nginx記錄日志是異步處理,并且不會因為硬盤的問題,導致請求異常,但是會影響日志的記錄) ;

?

5.worker_priority

????配置Nginx在linux服務器上資源使用的優先級,作為反向代理服務,應該擁有極高的優先級,建議配置到-10;

?

6.gzip_comp_level

????壓縮等級,等級最高為9,等級越高壓縮后的文件越小,但是消耗的cpu也會更多,經過測試,壓縮等級7 和 9 的文件大小相比,其實只有細微的差別,用5-7的等級足矣;

?

7.upstream塊

????配置上游服務器,可以結合 proxy_next_upstream 等指令做大量的優化,我會在下面的章節單獨說明;

?

8.error_page

????錯誤重定向,可以捕獲上游服務器錯誤的狀態碼后,將請求重定向到其它地方,比如提供友好頁面,關于error_page的更強大的使用方式。

?

9.location & root

????通過root路徑可以讀取靜態文件,在1.7.11以前的版本,Nginx讀取硬盤的文件,都是阻塞型操作,后面引入了線程池,使得讀取硬盤提供了非阻塞的操作,極大的提升了硬盤的io,也提升了proxy_cache的能力。

Nginx的常見配置在使用中都有著不同的變化,那么對于更為復雜的配置來說,其配置就顯得更為精妙了,所以熟悉Nginx的官方wiki是發揮它巨大作用的基礎。

?

常見配置注解


?

user ?www www;???

????#定義Nginx運行的用戶和用戶組

worker_processes ?2;????

????#Nginx進程數

worker_cpu_affinity auto;????

????#配置Nginx進程cpu親源性

error_log ?/var/log/error_log ?info;????

????#全局錯誤日志定義類型?,默認是error

worker_rlimit_nofile 65535;????

????#一個Nginx進程打開的最多文件描述符數量

pid /var/run/nginx.pid;????

????#進程文件

worker_priority -10;????

????#linnx系統下的資源使用的優先級

worker_rlimit_nofile ?65535;????

????#worker進程的最大打開文件數限制

worker_shutdown_timeout ?30;????

????#30s內Nginx無法平滑退出,就強行關閉進程

events {

??worker_connections ?10000;????

????#單個進程最大連接數(整個Nginx最大連接數=連接數*進程數)

??use epoll;????

????#epoll linux2.6+內核高性能的網絡io,?如果跑在FreeBSD上面,就用kqueue模型。

}

?

http {

????include ??????conf/mime.types;????

????#文件擴展名與文件類型映射表

????default_type ?application/octet-stream;?????

????#默認文件類型

????log_format main ????'$remote_addr - $remote_user [$time_local] '

?????????????????????????'"$request" $status $bytes_sent '

?????????????????????????'"$http_referer" "$http_user_agent" '

?????????????????????????‘"$http_cookie"';???

????#定義日志格式

????client_header_buffer_size ???1k;????

????#設置用戶請求頭所使用的buffer大小

????large_client_header_buffers ?4 4k;????

????#當默認的緩沖不夠用時就會使用此參數。

????server_names_hash_bucket_size 128;????

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

????client_header_buffer_size 32k;????

????#上傳文件大小限制

????gzip?on;????

????#開啟gzip

????gzip?_comp_level 6;????

????#壓縮等級

????gzip?_min_length ?1100;????

????#設置允許壓縮的頁面最小字節數

????gzip?_buffers ????4 8k;????

????#設置系統獲取幾個單位的緩存用于存儲gzIP的壓縮結果數據流。4 8k?代表以8k為單位,按照原始數據大小以8k為單位的4倍申請內存。

????gzip?_types ??????text/plain text/css;????

????#匹配MIME類型進行壓縮

????output_buffers ??2 32k;????

????#設置用于從磁盤讀取響應的緩沖區的數量和大小。?此設置為:按照原始數據大小以32K為單位的2倍大小申請內存空間。

????sendfile ????????on;????

????#啟用sendfile()函數

????tcp_nopush ??????on;????

????#防止網絡阻塞,需要sendfile開啟

????tcp_nodelay ?????on;????

????#防止網絡阻塞,需要sendfile開啟

????keepalive_timeout 90s;????

????#長連接超時時間,單位是秒

????upstream backend {

????server 192.168.1.12:8081 weight=3;

????server 192.168.1.13:8081 weight=2;

}?

????#upstream塊,weight是權重,權重越高,請求的比例越高。?

????server {

????????listen ??????80;?????

?????????#http監聽端口

????????server_name ?your.example.com;??

????????#域名

????????access_log ??/var/log/nginx.access_log ?main;?????

????????#訪問日志記錄

????????charset ?koi8-r;????

????????#默認編碼

????????location / {

????????????proxy_pass ????????http://backend ;

????????????proxy_redirect ????off;

????????????proxy_set_header ??Host ????????????$host;

????????????proxy_set_header ??X-Real-Ip ??????$remote_addr;

????????????proxy_set_header ?X-Forwarded-For ?$proxy_add_x_forwarded_for; ??????}????

????????#后端的應用服務器通過X-Forwarded-For獲取用戶的真實IP

????????error_page ?404 ?/404.html;????

????????#對于后端應用服務器拋出的錯誤404?進行頁面重定向

????????location /404.html {

????????????root ?/spool/www;

????????}?

????????#?匹配URL為jpg,jpeg,gif結尾的,直接去系統文件讀取

????????location ~* \.(jpg|jpeg|gif)$ {

????????????root ????????/spool/www;

????????????expires ?????30d;????

????????#瀏覽器緩存的時間

????????}

????}

轉載于:https://www.cnblogs.com/dtdxrk/p/9438497.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249777.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249777.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249777.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

transform、transition 動畫效果

transform 轉換,變形 origin 定義旋轉基點(left top center right bottom 坐標值) transform-origin: 50px 50px; transform-origin: left;。 rotate 旋轉 transform:rotate(50deg) 旋轉角度可以為負數,需要先定義…

eslint 規則

"off"或0- 關閉規則 "warn"或1- 將規則作為警告打開(不影響退出代碼) "error"或2- 將規則作為錯誤打開(觸發時退出代碼為1)轉載于:https://www.cnblogs.com/smzd/p/10844161.html

分布式學習路線

由于分布式系統所涉及到的領域眾多,知識龐雜,很多新人在最初往往找不到頭緒,不知道從何處下手來一步步學習分布式架構。 本文試圖通過一個最簡單的、常用的分布式系統,來闡述分布式系統中的一些基本問題。 負載均衡分布式緩存分…

洛谷p2704 炮兵陣地

典型的狀態壓縮題&#xff0c;只是要定義dp[i][j][k]&#xff0c; #include<bits/stdc.h>using namespace std;int n,m,state[1<<10],tot0;int dp[110][66][66],sum[1<<10],mp[110];int getsum(int x){ int cnt0; while(x){ if(x&1) cnt; …

Flask 框架app = Flask(__name__) 解析

1 #!/usr/local/bin/python2 # codingutf-83 4 from flask import Flask5 app Flask(__name__)6 7 app.route(/)8 def hello_world():9 return Hello World! 10 11 if __name__ __main__: 12 app.run(host0.0.0.0,port9000) 第4行&#xff0c;引入Flask類&#x…

發布訂閱

發布訂閱 在軟件架構中&#xff0c;發布訂閱是一種消息范式&#xff0c;消息的發送者&#xff08;稱為發布者&#xff09;不會將消息直接發送給特定的接收者&#xff08;稱為訂閱者&#xff09;。而是將發布的消息分為不同的類別&#xff0c;無需了解哪些訂閱者&#xff08;如果…

ps 命令

ps 為我們提供了進程的一次性的查看&#xff0c;它所提供的查看結果并不動態連續的&#xff1b;如果想對進程時間監控&#xff0c;應該用 top 工具。kill 命令用于殺死進程。linux上進程有5種狀態: 1. 運行(正在運行或在運行隊列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的…

python練習題-day8

1、有如下文件&#xff0c;a1.txt&#xff0c;里面的內容為&#xff1a; 老男孩是最好的培訓機構&#xff0c; 全心全意為學生服務&#xff0c; 只為學生未來&#xff0c;不為牟利。 我說的都是真的。哈哈 分別完成以下的功能&#xff1a; a,將原文件全部讀出來并打印。 with o…

消息中間件應用場景

消息中間件應用場景

IDEA開發vue.js卡死問題

在執行cnpm install后會在node_modules這個文件下面生成vue的相關依賴文件&#xff0c; 這個時候當執行cnpm run dev命令時&#xff0c;會導致IDEA出現卡死的問題&#xff0c;解決方法如下&#xff1a; 轉載于:https://www.cnblogs.com/heqiuyong/p/10301925.html

[BZOJ4698][SDOI2008]Sandy的卡片(后綴自動機)

差分之后就是求多串LCS。 對其中一個串建SAM&#xff0c;然后把其它串放在上面跑。 對SAM上的每個狀態都用f[x]記錄這個狀態與當前串的最長匹配長度&#xff0c;res[x]是對每次的f[x]取最小值。答案就是res[]的最大值。 考慮f[x]的求法&#xff0c;把s[]放在SAM上跑時&#xff…

點對點

數據傳輸的可靠性是通過數據鏈路層和網絡層的點對點和傳輸層的端對端保證的。點對點是基于MAC地址或者IP地址&#xff0c;是指一個設備發數據給另外一個設備&#xff0c;這些設備是指直連設備包括網卡&#xff0c;路由器&#xff0c;交換機。端對端是網絡連接&#xff0c;應用程…

none

module.exports {root: true,env: {node: true},extends: [plugin:vue/essential, vue/prettier],rules: {no-console: process.env.NODE_ENV production ? error : off,no-debugger: process.env.NODE_ENV production ? error : off,prettier/prettier: [error,{// tab縮…

MQ消息中間件介紹

消息隊列技術是分布式應用間交換信息的一種技術&#xff0c;消息隊列可駐留在內存或者磁盤上&#xff0c;隊列存儲消息直到它們被應用程序讀走&#xff0c;通過消息隊列&#xff0c;應用程序可以獨立的執行—它們不需要知道彼此的位置&#xff0c;或者繼續執行前不需要等待接收…

22 塊級元素和行內元素

學習的初期&#xff0c;我們就要知道&#xff0c;標準文檔流等級森嚴。標簽分為兩種等級&#xff1a; 行內元素塊級元素比如h1標簽和span&#xff0c;同時設置寬高&#xff0c;來看瀏覽器效果&#xff0c;那么你會發現&#xff1a; 行內元素和塊級元素的區別&#xff1a;&#…

節流防抖

https://www.cnblogs.com/fsjohnhuang/p/4147810.html 轉載于:https://www.cnblogs.com/smzd/p/10943002.html

P3796 【模板】AC自動機(加強版)

題目描述 有 NNN 個由小寫字母組成的模式串以及一個文本串 TTT 。每個模式串可能會在文本串中出現多次。你需要找出哪些模式串在文本串 TTT 中出現的次數最多。 輸入輸出格式 輸入格式&#xff1a;輸入含多組數據。 每組數據的第一行為一個正整數 NNN &#xff0c;表示共有 NNN…

訪問數據庫優化

例如&#xff1a;工資表里面有全公司人員的工資信息。 現在我需要把這些工資信息打印成工資條。因此需要訪問數據庫。 1.把整個表全部讀取出來&#xff0c;內存處理每個人的工資信息。 2.按照人員單個查詢每個人的工資信息。 分析&#xff1a;第一種情況是將所有的人員全部查詢…

psql 命令

&#xff08;1&#xff09;使用命令行連接數據庫psql -U postgres -h localhost -p 5433 &#xff08;2&#xff09;列出所有的數據庫\l -- 查看所有數據庫&#xff08;3&#xff09;進入某個數據庫\c name -- name是表名(4)列出數據庫的所有數據表和視圖\d -- 列出所有的數據…

各種緩存介紹

說起緩存相關技術&#xff0c;老多了&#xff0c; memcache、redis、squid、varnish、web cache、 CDN等等。緩存技術五花八門&#xff0c;但這些技術間有什么共性的地方&#xff0c;又有什么不同的地方呢&#xff1f;答案肯定是有的&#xff0c;這次為大家分享及整理一下緩存方…