<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
大部分web應用都使用了nginx做負載均衡伺服器,下面總結了nginx.conf中一些可以微調的設定。需要注意一點,這不是一個全面的微調指南。這是一個簡單的預覽——那些可以通過微調來提高效能設定的概述。你的情況可能不同。
nginx.conf中主要分高層設定、Events模組、HTTP 模組三個模組。下面依次介紹個模組可以微調的設定。
user admin; #定義Nginx執行的使用者 error_log ar/loginx/error.log info; #全域性錯誤紀錄檔定義型別,[ debug | info | notice | warn | error | crit ] access_log off; #定義本虛擬主機的存取紀錄檔 pid ar/runinx.pid; #程序檔案 worker_processes auto; #nginx程序數 worker_rlimit_nofile 65535; #一個nginx程序開啟的最多檔案描述符數目
可以微調的設定:
events { use epoll; #設定用於複用使用者端執行緒的輪詢方法,[ kqueue | rtsig | epoll | /dev/poll | select | poll ] worker_connections 65535; #單個程序最大連線數(最大連線數=連線數*程序數) multi_accept on; #開啟後告訴nginx收到一個新連線通知後接受盡可能多的連線 }
可以微調的設定:
HTTP模組控制著nginx http處理的所有核心特性,內容比較多,這裡分批說明。
http{ server_tokens off; #開啟或關閉在錯誤資訊的「Server」響應頭中輸出nginx版本號 include mime.types; #副檔名與檔案型別對映表 default_type application/octet-stream; #預設檔案型別 charset utf-8; #預設編碼 server_names_hash_bucket_size 128; #伺服器名字的hash表大小 client_header_buffer_size 32k; #設定讀取使用者端請求頭部的緩衝容量 large_client_header_buffers 4 64k; #設定讀取使用者端請求超大請求的緩衝最大number(數量)和每塊緩衝的size(容量) client_max_body_size 8m; #設定請求快取 sendfile on; #開啟高效檔案傳輸模式 autoindex on; #開啟目錄列表存取,合適下載伺服器,預設關閉。 tcp_nopush on; #開啟或者關閉nginx在FreeBSD上使用TCP_NOPUSH通訊端選項 tcp_nodelay on; #開啟或關閉nginx使用TCP_NODELAY選項的功能 keepalive_timeout 120; #長連線超時時間,單位是秒 reset_timedout_connection on; #開啟或關閉重置超時連線的功能 ... }
可以微調的設定:
gzip on; #開啟gzip壓縮輸出 gzip_min_length 1k; #最小壓縮長度 gzip_buffers 4 16k; #壓縮緩衝區 gzip_http_version 1.0; #壓縮版本 gzip_comp_level 2; #壓縮等級 gzip_types text/plain application/x-javascript text/css application/xml; #壓縮型別。 limit_zone crawler $binary_remote_addr 10m; #開啟限制IP連線數的時候需要使用 upstream 127.0.0.1 { #負載均衡 server 192.168.80.121:80 weight=3; server 192.168.80.122:80 weight=2; server 192.168.80.123:80 weight=3; }
可以微調的設定:
server{ listen 80; #監聽埠 server_name www.cainiao.com cainiao.com; #域名可以有多個,用空格隔開 location / { #對 "/" 啟用反向代理 proxy_pass 127.0.0.1:8080; #設定後端伺服器的協定和地址 #root /home/admin/pac; #請求根目錄 #index index.html index.htm; #主頁 #後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #以下是一些反向代理的設定,可選。 proxy_set_header Host $host; client_max_body_size 10m; #允許使用者端請求的最大單檔案位元組數 client_body_buffer_size 128k; #緩衝區代理緩衝使用者端請求的最大位元組數, proxy_connect_timeout 90; #nginx跟後端伺服器連線超時時間(代理連線超時) proxy_send_timeout 90; #後端伺服器資料回傳時間(代理傳送超時) proxy_read_timeout 90; #連線成功後,後端伺服器響應時間(代理接收超時) proxy_buffer_size 4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小 proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的設定 proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定快取資料夾大小,大於這個值,將從upstream伺服器傳 } }
//定義一個使用者以及對應的組 user admin admin //定義nginx worker 程序的數量,設定為auto,就是預設和CPU個數一致 work_processess auto //與上面的指令協同工作。他可以讓你的worker程序影響CPU核心,數位序列和work程序一樣多 work_cpu_affinity auto //nginx錯誤紀錄檔,有debug,warn, error等五個等級 error_log /home/admin/web/logs/error.log warn //用於存放nginx守護行程的PID檔案路徑, 裡面記錄了主程序的pid號 pid /home/admin/nginx/logs/nginx-search.pid; //定義每個work程序的核心檔案大小 worker_rlimit_core 1024M //定義一個worker程序可以同時處理的檔案數量 worker_rlimit_nofile 100000 //與events模組一起提供的指令可以用來設定網路機制,指令引數對nginx效能產生影響 events{ //定義一個worker程序能夠同時連線的數量 worker_connectins 10240; use epoll; } //該區段嵌入組態檔的根部,在該區段允許定義指令和嵌入HTTP相關模組 -http{ //隱藏nginx的版本號, 出現400 500 頁面時候不會顯示nginx伺服器的版本號,避免漏洞 server_token off; //檔案包含指令; mime.type檔案裡面儲存了nginx的MIME型別; 裡面其實也是一個types{...} include mime.type // 該指令允許你在MIME型別和副檔名之間建立聯絡, 可以補充mime.type檔案沒有對應關係 types{ application/x-compress .Z; application/x-gzip .gz .tgz; application/x-httpd-php .php .html; } //定義預設的MIME型別,如果副檔名與mime.type中型別都不匹配,就將該值寫進content-type default_type text/plain; //如果該指令被啟用,Nginx將使用sendFile 核心來呼叫檔案傳遞。如果禁用,那麼nginx將自己處理檔案傳遞 sendfile on; //該選項只用於sendfile已啟動的情況。若為on, 那麼nginx將嘗試單個TCP封包中傳送整個HTTP響應頭 tcp_nopush on; //keep-alive能夠使使用者端到伺服器的連結在一定時間內持續有效,在這個時間內,使用者端對伺服器的存取不需要再次建立連結 keepalive_timeout 0; client_header_timeout 30s; //指定持有使用者端請求主體的快取大小,如果超過這個大小,那麼主體將被寫到磁碟 client_body_buffer_size 32k; /**gzip是一種壓縮技術。經過gzip壓縮後頁面大小可以變為原來的30%甚至更小**/ //開啟gzip模組 off為關閉 gzip on; //識別http的協定版本 gzip_http_version 1.0; //gzip壓縮比,1壓縮比最小,9壓縮比最大,相應的速度也會變慢 gzip_comp_level 6; // 設定允許壓縮的頁面最小位元組數,預設為0,頁面多大都壓縮 gzip_min_length 1024; //啟用或者禁用gzip壓縮,針對代理伺服器上接收到的相應體 gzip_proxied any; //有的瀏覽器支援壓縮,有的不支援,為了避免浪費,根據HTTP頭來判斷是否需要壓縮 gzip_vary on; gzip_disable msie6; //??? //設定系統獲取幾個單位的快取用於儲存gzip的壓縮結果資料流 gzip_buffers 64 8k; //匹配mime型別進行壓縮,無論是否制定「text/html」型別總會被壓縮 gzip_types text/xml text/plain text/css application/javascript application/x- javascript application/rss+xml; //定義檔案的根目錄,該目錄包含你希望為存取者提供的內容 root /home/admin/web/htdocs; //定義一個預設的頁面,如果請求中沒有指定檔名,nginx就會使用該頁面提供服務。 index index.html index.php index.htm; //proxy_set_header nginx作為反向代理伺服器,將請求轉發給後端真實伺服器,如果不行host的重寫,所有的真是伺服器都會誤認為是nginx伺服器傳送的請求。 proxy_set_header就是用於將使用者端真實的host, ip資訊,傳送給後端伺服器。 http://www.ithov.com/linux/109626_3.shtml proxy_set_header Host $host; //在這裡X-Real-IP是一個自定義的變數名,名字可以隨意取,在web端可以用request.getAttribute("X-Real-IP") 獲取IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header Web-Server-Type nginx; // 如果需要修改從被代理伺服器傳來的應答頭中的」Location」和」Refresh」欄位,可以用指令設定。 proxy_redirect off; proxy_buffers 128 8k; proxy_intercept_errors on; //開啟或者禁用404沒有找到HTTP錯誤。例如,如果紀錄檔中充滿了404錯誤,卻由於 robots.txt檔案,那麼你可以將這個選項關閉掉; log_not_found off; // 用於定義發生制定的錯誤程式碼時候,使用errror_page來定義伺服器的行為。最簡單的形式是使用一個錯誤程式碼改變URI error_page 403 404 405 http://www.jd.com/home/error.php; error_page 500 501 502 http://www.jd.com/home/error2.php; expires_by_types modified +3y image/gif image/jpeg image/jpg text/css application/x-shockwave-flash; //限制被定義的zone的請求總數,$binary_remote_addr用於區分使用者端, rate表示每秒的請求數(r/s)或者每分鐘請求數(r/m) limit_req_zone $binary_remote_addr zone=one:100m rate=5r/s; #virtual servers server{ //指定用於提供web服務站點監聽的通訊端所使用的IIP和埠 listen 80; //在server區段指定一個或者多個主機名(hostname), Nginx接收到HTTP請求以後,會與所有server區段相比較,然後找到與使用者端請求header中Host匹配的server區段。如果沒有與使用者端匹配的server區段,nginx會選擇第一個server區段。該指令接受萬用字元 server_name wenda.taobao.com q.etao.com wenda.etao.com; // 定義一個紀錄檔模板用於描述存取紀錄檔中一條包含的內容,該模板由access_log指令使用 log_format eformat ' remoteaddr r e m o t e a d d r request_time_usec remoteuser[ r e m o t e u s e r [ time_local] ' '"requestmethodhttp:// r e q u e s t m e t h o d h t t p : / / hostrequesturi" r e q u e s t u r i " status $body_bytes_sent ' '" httpreferer"" h t t p r e f e r e r "" http_user_agent"'; //該指令定了存取紀錄檔檔案的路徑 access_log "pipe: /opt/taobao/install/cronolog/sbin/cronolog /home/admin/web/logs/search/%Y/%m/%d/access-%Y-%m-%d_%H.log" eformat; //定義檔案的根目錄,該目錄包含你希望為存取者提供的內容 root /home/admin/web/htdocs/; //limit_req_one 同上,burst定義了最大可能的突發請求, 在一定程度上,burst定義的值就是隻能同時接受最大數量的請求值 limit_req zone=one burst=5 nodelay; //set_by_lua指令支援通過一小段使用者Lua程式碼來計算出一個結果,然後複製給Nginx 變數,和set指令相似 //Lua程式碼中,通過ngx.var.VARIABLE來讀取Nginx的變數; 下面的一段程式碼是用於修復comons-fileupload-1.0版本的漏洞 set_by_lua invalid_ct 'local ct = ngx.var.http_content_type if ct and #ct >= 2049 then return 1 else return 0 end'; if ( invalid_ct 'local ct = ngx.var.http_content_type if ct and #ct >= 2049 then return 1 else return 0 end'; if ( invalid_ct = '1') { return 400; } //根據host 進行跳轉的判斷 if ($host = 'q.jd.com'){ //該指令允許你對當前請求的URI 進行重寫,因此對使用者端的請求會被重新設定 //格式為 rewrite regexp replacement 【flag】 ;; flag 包含:last, break,redirect, permanent // regexp 是URI正規表示式,他的目的是匹配後面的replacement //permanent 返回301 重定向響應,被替代的URI作為location頭的值(瀏覽器顯示跳轉之後URL地址) rewrite ^/(.*) http://wenda.jd.com/ http://wenda.jd.com/1 permanent; } location ~ .(do|htm|vhtml|service|jhtml)$ { //在設定proxy_pass的時候需要注意:http://dmouse.iteye.com/blog/1880474 //符合location 樣式跳轉地址; 這個指令設定被代理伺服器的地址和被對映的URI,地址可以使用主機名或IP加埠號的形式。 proxy_pass http://127.0.0.1:8000; //拒絕存取的IP欄位 deny 113.59.*.*; } }
更詳細的模組引數請參考:http://nginx.org/cn/docs/
核心模組:http://nginx.org/cn/docs/http/ngx_http_core_module.html
到此這篇關於nginx有哪些常規調優手段詳解的文章就介紹到這了,更多相關nginx常規調優手段內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45