




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Nginx 應(yīng)用詳解及配置一、Nginx 簡介;概述:Nginx 是一款由俄羅斯開發(fā)的開源的高性能 HTTP 服務(wù)器和反向服務(wù)器,同時(shí)支持 IMAP/POP3/SMTP理 50000 并發(fā);服務(wù),其性能優(yōu)勢著為顯著,官網(wǎng)上稱:nginx 服務(wù)器可以處特點(diǎn):高性能、穩(wěn)定、消耗硬件的分離;優(yōu)勢:小、能夠處理大并發(fā),主要用于靜態(tài)的,動(dòng)靜頁面1.作為 Web 服務(wù)器,nginx 處理靜態(tài)文件、索引文件以及自動(dòng)索引效率非常高。2.作為服務(wù)器,Nginx 可以實(shí)現(xiàn)無緩存的反向,提高運(yùn)行速度。3.作為負(fù)載均衡服務(wù)器,Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP,也可以支持 HTTP服務(wù)器,對行服
2、務(wù)。同時(shí)支持簡單的容錯(cuò)和利用算法進(jìn)行負(fù)載均衡。1.在性能方面,Nginx 在實(shí)現(xiàn)上非常注重效率。它采用內(nèi)核 Poll 模型,可以支持的并發(fā)連接,最大可以支持對 50 000 個(gè)并發(fā)連接數(shù)的響應(yīng),而且占用很低的內(nèi)存。2.在穩(wěn)定性方面,Nginx 采取了分階段分配技術(shù),使得對 CPU 與內(nèi)存的占用率非常低。Nginx表示 Nginx 保持 10 000 個(gè)沒有活動(dòng)的連接,這些連接只占 2.5M 內(nèi)存,因此,類似 DOS 這樣的對 Nginx 來說基本上是沒有任何作用的。3.在高可用性方面,Nginx 支持熱部署,啟動(dòng)速度特別迅速,因此可以在不間斷服務(wù)的情況下,對軟件版本或者配置進(jìn)行升級,即使運(yùn)行數(shù)
3、月也無需重新啟動(dòng),幾乎可以做到 7*24 小時(shí)的不間斷運(yùn)行。二、Nginx 實(shí)現(xiàn)原理;Nginx組件:模塊:HTTP 模塊、EVENT模塊、MAIL 模塊?;A(chǔ)模塊:HTTP Access 模塊、HTTP FastCGI 模塊、HTTP Proxy 模塊、HTTP Rewrite 模塊第模塊:HTTP Upstream Request Hash 模塊、Notice 模塊、HTTP Access Key 模塊。Nginx 模塊分類(基于功能):Handlers:處理器模塊,此類模塊直接處理請求,并進(jìn)行輸出內(nèi)容和修改 headers 信息等操作。Handlers 處理器模塊一般只能有一個(gè)。Filt
4、ers:過濾器模塊,此類模塊主要對其他處理器模塊輸出的內(nèi)容進(jìn)行修改操作,最后由Nginx 輸出。Proxies:類模塊,此類模塊是 Nginx 的 HTTP Upstream 之類的模塊,這些模塊主要與后端一些服務(wù)比如 FastCGI 等進(jìn)行交互,實(shí)現(xiàn)服務(wù)和負(fù)載均衡等功能。Nginx 的進(jìn)程模型:單工作進(jìn)程模式:除主進(jìn)程外,還有一個(gè)工作進(jìn)程,工作進(jìn)程是單線程的,默認(rèn)為此模式; 多工作進(jìn)程模式:每個(gè)工作進(jìn)程包含多個(gè)線程;master 進(jìn)程:1.接收外界傳遞給 Nginx 的信號,進(jìn)而管理服務(wù)的狀態(tài)等;2.管理 worker 進(jìn)程,worker 進(jìn)程信號,worker 進(jìn)程的運(yùn)行狀態(tài),當(dāng) work
5、er進(jìn)程異常情況下后,會自動(dòng)重新啟動(dòng)新的 worker 進(jìn)程;3.master 進(jìn)程充當(dāng)整個(gè)進(jìn)程組與用戶的交互接口,同時(shí)對進(jìn)程進(jìn)行監(jiān)護(hù)。它不需要處理網(wǎng)絡(luò),不負(fù)責(zé)業(yè)務(wù)的執(zhí)行,只會通過管理 worker 進(jìn)程來實(shí)現(xiàn)重啟服務(wù)、平滑升級、更換日志文件、配置文件效等功能。worker 進(jìn)程:1.處理基本的網(wǎng)絡(luò)各進(jìn)程互相之間是,多個(gè) worker 進(jìn)程之間是對等的,他們同等競爭來自客戶端的請求, 的。一個(gè)請求,只可能在一個(gè) worker 進(jìn)程中處理,一個(gè) worker 進(jìn)程,不可能處理其它進(jìn)程的請求。worker 進(jìn)程的個(gè)數(shù)是可以設(shè)置的,一般我們會設(shè)置與核 數(shù)一致;擴(kuò)展:# nginx 實(shí)現(xiàn)原理cpu三、
6、Nginx 支持高并發(fā)的I/O 模型之 select:;1.每個(gè)連接對應(yīng)一個(gè)描述。select 模型受限于 FD_SETSIZE(即進(jìn)程最大打開的描述符數(shù)), linux2.6.35 為 1024,實(shí)際上 linux 每個(gè)進(jìn)程所能打開描數(shù)字的個(gè)數(shù)僅受限于內(nèi)存大小,然而在設(shè)計(jì) select 的系統(tǒng)調(diào)用時(shí),卻是參考 FD_SETSIZE 的值??赏ㄟ^重新編譯內(nèi)核更改此值,但不能根治此問題,對于百萬級的用戶連接請求即便增加相應(yīng)進(jìn)程數(shù),仍顯得杯水車薪;2、select 每次請求都會掃描一個(gè)文件描述符的集合,這個(gè)集合的大小是作為 select 第一個(gè)參數(shù)傳入的值。但是每個(gè)進(jìn)程所能打開文件描述符若是增加了
7、,掃描的效率也將減小;3、內(nèi)核到用戶空間,采用內(nèi)存I/O 模型之 epoll 模型:方式傳遞信息,這樣就增加了不必要的延遲;1.請求無文件描述字大小限制,僅與內(nèi)存大小相關(guān); 2.epoll 返回時(shí)已經(jīng)明確的知道哪個(gè) socket fd對;,不用像 select 那樣再一個(gè)個(gè)比3.內(nèi)核到用戶空間,采用共享內(nèi)存方式傳遞消息,使用 mmap遞;內(nèi)核與用戶空間的消息傳apache:Apache 2.2.9 之前只支持 select 模型,2.2.9 之后支持 epoll 模型;Nginx:支持 epoll 模型;四、案例:搭建 Nginx案例環(huán)境:服務(wù);案例步驟:ØØØ&
8、#216;ØØØØØ安裝 nginx 程序;優(yōu)化 nginx 服務(wù)并啟動(dòng)服務(wù);客戶端測試;開啟 nginx 的狀態(tài)模塊;客戶端nginx 的狀態(tài)界面;企業(yè)級優(yōu)化 Nginx 服務(wù);測試優(yōu)化后 nginx 服務(wù);安裝 webbench測試工具,進(jìn)試 nginx 性能;學(xué)習(xí):Nginx 服務(wù)器內(nèi)核優(yōu)化;系統(tǒng)類型IP 地址主機(jī)名所需軟件硬件Centos 6.5 64bit50nginx-1.12.2.tar.gz內(nèi)存:2G CPU:8 核Ø安裝 nginx 程序;rootwww # rpm -e httpd -no
9、depsrootwww # yum -y install pcre-devel zlib-devel rootwww # useradd -M -s /sbin/nologin nginx rootwww # tar zxvf nginx-1.12.2.tar.gz -C /usr/src/ rootwww # cd /usr/src/nginx-1.12.2/rootwww nginx-1.12.2# ./configure -prefix=/usr/local/nginx -user=nginx -group=nginx-with-http_stub_status_module注解:-pr
10、efix=/usr/local/nginx#指定安裝位置-user=nginx -group=nginx#指定運(yùn)行服務(wù)的用戶和組-with-http_stub_status_module#開啟狀態(tài)模塊 -error-log-path=#指向錯(cuò)誤日志存放位置-with-rtsig_module#啟用 rtsig 模塊支持(實(shí)時(shí)信號)-with-select_module#啟用 select 模塊支持(一種輪詢模式,不推薦在高載環(huán)境下使用)禁用:-without-select_module-with-http_ssl_module#啟用 ngx_http_ssl_module 支持(使支持 htt
11、ps 請求,需已安裝 openssl)-with-http_xslt_module#啟用 ngx_http_xslt_module 支持(過濾轉(zhuǎn)換 XML 請求)-with-http_image_filter_module#啟用 ngx_http_image_filter_module 支持(傳輸JPEG/GIF/PNG 圖片的一個(gè)過濾器)(默認(rèn)為不啟用,要用到 gd 庫) -with-http_gzip_static_module#啟用 ngx_http_gzip_static_module 支持(實(shí)時(shí)壓縮輸出數(shù)據(jù)流)-with-http_degradation_module#啟用 ngx_
12、http_degradation_module 支持( 在內(nèi)存不足的情況下返回 204 或 444 碼)-without-http_access_module#禁用 ngx_http_access_module 支持(該模塊提供了一個(gè)簡單的基于主機(jī)的,或拒絕基于 ip 地址)-without-http_auth_basic_module#禁用 ngx_http_auth_basic_module(該模塊是可以使用用戶名和基于 http 基本認(rèn)證方法,來保護(hù)你的站點(diǎn)或其部分內(nèi)容)-without-http_rewrite_module#禁用 ngx_http_rewrite_module 支持(
13、該模塊允許使用正則表達(dá)式改變 URL)-without-http_fastcgi_module#禁用 ngx_http_fastcgi_module 支持(該模塊Nginx 與 FastCGI 進(jìn)程交互,并通過傳遞參數(shù)來FastCGI 進(jìn)程工作。) rootwww nginx-1.12.2# make &&make installrootwww nginx-1.12.2# ls /usr/local/nginx/client_body_tempuwsgi_tempconffastcgi_temphtmllogsproxy_tempsbinscgi_temprootwww ngi
14、nx-1.12.2# cdØ優(yōu)化 nginx 服務(wù)并啟動(dòng)服務(wù);#優(yōu)化命令執(zhí)行路徑rootwww # ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/-pid-path=#指向 pid 文件存放位置-conf-path=#指向配置文件存放位置rootwww # vi /etc/init.d/nginx#!/bin/bash# chkconfig: - 99 20# description: Nginx Server Control Script NP="/usr/local/nginx/sbin/nginx" NP
15、F="/usr/local/nginx/logs/nginx.pid" case "$1" instart)$NP;if $? -eq 0 thenecho "nginx is starting! "fi;stop)kill -s QUIT $(cat $NPF) if $? -eq 0 thenecho "nginx is stopping! " fi;restart)$0 stop$0 start;reload)kill -s HUP $(cat $NPF) if $? -eq 0 thenecho "
16、;nginx config file is reload! "fi;*)echo "Usage: $0 start|stop|restart|reload" exit 1esac exit 0rootwww # chmod +x /etc/init.d/nginx rootwww # chkconfig -add nginx rootwww # chkconfig nginx on rootwww # /etc/init.d/nginx start nginx is starting!rootwww # netstat -utpln |grep nginxtcp0
17、0 :80:*LISTEN3713/nginxØ客戶端測試;Ø開啟 nginx 的狀態(tài)模塊;#編輯配置文件在server 中添加如rootwww # vi /usr/local/nginx/conf/nginx.conf下行:47484950location /status stub_status on; access_log off;rootwww # /etc/init.d/nginx restartnginx is stopping! nginx is starting!Ø客戶端nginx 的狀態(tài)界面;活動(dòng)的連接數(shù)已處理的連接數(shù)的
18、tcp 握手次數(shù) 已處理的請求數(shù)Ø企業(yè)級優(yōu)化 Nginx 服務(wù);rootwww # vi/usr/local/nginx/conf/nginx.confworker_processes 8;worker_cpu_affi0000000100000010000001000000100000010000001000000100000010000000;error_log/usr/local/nginx/logs/nginx_error.logcrit;pid/usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 204800;events
19、use epoll;worker_connections 204800;httpinclude mime.types;default_typeapplication/octet-stream; charsetutf-8; server_names_hash_bucket_size128; client_header_buffer_size 2k; large_client_header_buffers 4 4k; client_max_body_size 8m;sendfileon;tcp_nopushon;keepalive_timeout 60;fastcgi_cache_path /us
20、r/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10minactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300; fastcgi_buffer_size 4k; fastcgi_buffers 8 4k; fastcgi_busy_buffers_size 8k; fastcgi_temp_file_write_size 8k;fastcgi_cache TEST;fastcgi_cache_valid 200 3
21、02 1h;fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;open_file_cache max=204800inactive=20s;open_file_cache_min_uses 1; open_file_cache_valid 30s;tcp_nay on;gzip on;gzip_min_length1k;gzip_buffers416k;gzip
22、_http_version 1.0;gzip_comp_level 2;gzip_typestext/plain application/x-javascript text/css application/xml; gzip_vary on;log_formataccess'$remote_addr - $remote_user $time_local "$request" ''$status $body_bytes_sent "$http_referer" ' '"$http_user_agent&qu
23、ot; $http_x_forwarded_for'serverlisten 80; server_name;location / root /usr/local/nginx/html/; index index.html index.htm;location /statusstub_status on; access_log off;location .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$expires 30d;access_log/usr/local/nginx/logs/access.logaccess;注解:worker_cpu_affi00
24、00000100000010000001000000100000010000001000000100000010000000;#設(shè)置每個(gè) worker 進(jìn)程對應(yīng)一個(gè) cpu 的error_log/usr/local/nginx/logs/nginx_error.logcrit;#指定錯(cuò)誤日志pid/usr/local/nginx/logs/nginx.pid;#指定運(yùn)行時(shí)產(chǎn)生的 pid 文件worker_rlimit_nofile 204800;#指定 nginx 進(jìn)程最多能夠打開多少個(gè)文件描述符,通常中的 ulimit -n 保持一致; use epoll;#指定處理模型為 epoll wo
25、rker_connections 204800;#每個(gè)進(jìn)程最多能夠處理多少個(gè)連接include mime.types;#指定文件擴(kuò)展名和文件類型表default_typeapplication/octet-stream;#指定文件類型http#http 服務(wù)配置區(qū)域events#區(qū)域配置worker_processes 8;#設(shè)置 worker 進(jìn)程數(shù)量server_names_hash_bucket_size128;#服務(wù)器名字的 hash 表大小client_header_buffer_size 2k;#客戶端請求頭部 buffer 大小large_client_header_buffer
26、s 4 4k;#指定客戶端請求中較大的消息頭的緩存數(shù)量和大小client_max_body_size 8m;#指定客戶端請求的單個(gè)文件的最大字節(jié)數(shù)keepalive_timeout 60;#客戶端連接超時(shí)時(shí)間#FastCGI 相關(guān)參數(shù)是為了的性能:減少占用,提高速度。fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2#配置 fastcgi 緩存路徑和目錄結(jié)構(gòu)等級 keys_zone=TEST:10m inactive=5m;#關(guān)鍵字區(qū)域 時(shí)間和非活動(dòng)刪除時(shí)間fastcgi_connect_timeout 300;#連接到后端
27、 FastCGI 的超時(shí)時(shí)間fastcgi_send_timeout 300;#向 FastCGI 傳送請求的超時(shí)時(shí)間fastcgi_read_timeout 300;#接收 FastCGI 應(yīng)答的超時(shí)時(shí)間fastcgi_buffer_size 4k;#指定FastCGI 應(yīng)答第一部分需要多大的緩沖區(qū)fastcgi_buffers 8 4k;#指定本地需要用多少和多大的緩沖區(qū)來緩沖FastCGI 的應(yīng)答請求fastcgi_busy_buffers_size 8k;#通常為 fastcgi_buffer_size 大小的兩倍fastcgi_temp_file_write_size 8k;#寫入緩
28、存文件時(shí)使用多大的數(shù)據(jù)塊,大小同上fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;#URL 經(jīng)過被多少次將被緩存fastcgi_cache_use_stale error timeout invalid_header http_500;#指定什么情況下不進(jìn)行緩存open_file_cache max=204800inactive=20s;#指定緩存文件最大數(shù)量,經(jīng)過多長時(shí)間文件沒有被請求后則刪除緩存,open_file_cache_min_uses 1;#指令中的inactive 參數(shù)
29、時(shí)間內(nèi)文件的最少使用次數(shù),如果超過這個(gè)數(shù)字,文件一直是在緩存中打開的;open_file_cache_valid 30s;#指定多長時(shí)間檢查一次緩存的有效信息,檢查該緩存的源文件是否發(fā)生變化修改等;換為長連接時(shí)使用;tcp_nay on;# nagle 算法,有需要的就立即,連接轉(zhuǎn)fastcgi_cache TEST;#開啟 Fastcgi 的緩存并且為其指定一個(gè)名稱fastcgi_cache_valid 200 302 1h;#指定不同的狀態(tài)碼,其緩存的時(shí)間sendfileon;#開啟高效傳輸模式tcp_nopushon;#防止網(wǎng)絡(luò)阻塞charsetutf-8;#指定字符集gzip_type
30、stext/plain application/x-javascript text/css application/xml;# 指定壓縮文件類型gzip_vary on;#前端緩存服務(wù)器緩存經(jīng)過壓縮的頁面log_formataccess'$remote_addr - $remote_user $time_local "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwar
31、ded_for' #配置日志格式,具體變量表示請結(jié)合,日志格式為 access serverlisten 80;server_name;location / root /usr/local/nginx/html/; index index.html index.htm;location /status stub_status on; access_log off;location .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$ expires 30d;#指定以上格式的文件將進(jìn)行緩存access_log/usr/local/nginx/logs/access.
32、logaccess; rootwww# /etc/init.d/nginx startnginx: warn no "fastcgi_cache_key" for "fastcgi_cache" in /usr/local/nginx/conf/nginx.conf:75 nginx: warn no "fastcgi_cache_key" for "fastcgi_cache" in /usr/local/nginx/conf/nginx.conf:75 nginx: warn no "fastcgi_
33、cache_key" for "fastcgi_cache" in /usr/local/nginx/conf/nginx.conf:75 nginx is starting!rootwww # netstat -utpln |grep nginxtcp3627/nginx00 :80:*LISTENrootwww # ps aux |grep nginx |grep -v greproot36270.00.030708376 ?Ss18:590:00 nginx: master process/usr/local/nginx/sbin
34、/nginxgzip on;#開啟 gzip 壓縮gzip_min_length1k;#指定最小壓縮文件的大小gzip_buffers416k;#指定壓縮緩沖區(qū)的個(gè)數(shù)和大小gzip_http_version 1.0;#指定壓縮版本gzip_comp_level 2;#指定壓縮等級 1-9,9 等級最高nginxnginx nginx nginx nginx nginx nginx nginxnginx3628362936303631363236333634363536360.1 11.6 113920 57600 ?0.0 11.1 113920 54932 ?SS S S S S SS18:5918:5918:5918:5918:5918:5918:5918:59S0:00 nginx: worker process0:00 nginx: worker process 0:00 nginx: worker process 0:00 nginx: worker process 0:00 nginx: worker process 0:00 nginx: worker process 0:00 nginx: worker process0:00 nginx: worker pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班會課件-感恩
- 2024年小班元宵節(jié)活動(dòng)策劃方案
- 建筑工人安全教育
- 高級育嬰員試題庫(含答案解析)
- 1月臨床醫(yī)學(xué)概論習(xí)題+答案(附解析)
- 《北斗導(dǎo)航基本原理》課件
- 幼兒急疹診療護(hù)理培訓(xùn)
- 《基礎(chǔ)數(shù)據(jù)分析優(yōu)化模型》課件
- 玻尿酸課件教學(xué)課件
- 環(huán)評工程課件下載
- 中藥學(xué)電子版教材
- 畢業(yè)設(shè)計(jì)外文文獻(xiàn)-基于 Vue.js 的后臺單頁應(yīng)用管理系統(tǒng)的研究與實(shí)現(xiàn)
- 新產(chǎn)品開發(fā)打樣流程
- 三軸龍門機(jī)械手
- 婦產(chǎn)科護(hù)理學(xué)智慧樹知到答案章節(jié)測試2023年石河子大學(xué)
- 文化差異與跨文化交際智慧樹知到答案章節(jié)測試2023年
- 石油石化行業(yè)數(shù)字化轉(zhuǎn)型規(guī)劃課件
- GB/T 4226-2009不銹鋼冷加工鋼棒
- 肌筋膜激痛點(diǎn)及還原
- 鋰離子電池粘結(jié)劑總結(jié)ATLCATL課件
- 九種基坑坍塌事故案例分析課件
評論
0/150
提交評論