版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
輕量級(jí)HTTP月服務(wù)器Nginx(配置與調(diào)試Nginx)Nginx安裝完畢后,會(huì)產(chǎn)生相應(yīng)的安裝目錄,根據(jù)前面的安裝路徑,Nginx的配置文件路徑為/opt/nginx/conf,其中nginx.conf為Nginx的主配置文件。這里重點(diǎn)介紹下nginx.conf這個(gè)配置文件。Nginx配置文件主要分成四部分:main(全局設(shè)置)、server(主機(jī)設(shè)置)、upstream(負(fù)載均衡服務(wù)器設(shè)置)和location(URL匹配特定位置的設(shè)置)。main部分設(shè)置的指令將影響其他所有設(shè)置;server部分的指令主要用于指定主機(jī)和端口;upstream指令主要用于負(fù)載均衡,設(shè)置一系列的后端服務(wù)器;location部分用于匹配網(wǎng)頁(yè)位置。這四者之間的關(guān)系式:server繼承main,location繼承server,upstream既不會(huì)繼承其他設(shè)置也不會(huì)被繼承。在這四個(gè)部分當(dāng)中,每個(gè)部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時(shí)每個(gè)部分還可以使用其他HTTP模塊指令,例如HttpSSL模塊、HttpGzipStatic模塊和HttpAddition模塊等。下面通過(guò)一個(gè)Nginx配置實(shí)例,詳細(xì)介紹下nginx.conf每個(gè)指令的含義。為了能更清楚地了解Nginx的結(jié)構(gòu)和每個(gè)配置選項(xiàng)的含義,這里按照功能點(diǎn)將Nginx配置文件分為7個(gè)部分逐次講解,下面就圍繞這7個(gè)部分進(jìn)行介紹。1.Nginx的全局配置下面這段內(nèi)容是對(duì)Nginx的全局屬性配置,代碼如下:usernobodynobody;worker_processes4;error_loglogs/error.lognotice;pid logs/nginx.pid;worker」limit_nofile65535;events{useepoll;worker_connections 65536;}對(duì)上面這段代碼中每個(gè)配置選項(xiàng)的含義解釋如下:user是個(gè)主模塊指令,指定NginxWorker進(jìn)程運(yùn)行用戶以及用戶組,默認(rèn)由nobody賬號(hào)運(yùn)行。worker_processes是個(gè)主模塊指令,指定了Nginx要開啟的進(jìn)程數(shù)。每個(gè)Nginx進(jìn)程平均耗費(fèi)10M~12M內(nèi)存。根據(jù)經(jīng)驗(yàn),一般指定一個(gè)進(jìn)程足夠了,如果是多核CPU,建議指定和CPU的數(shù)量一樣的進(jìn)程數(shù)即可。error_log是個(gè)主模塊指令,用來(lái)定義全局錯(cuò)誤日志文件。日志輸出級(jí)別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日志最為最詳細(xì),而crit輸出日志最少。pid是個(gè)主模塊指令,用來(lái)指定進(jìn)程id的存儲(chǔ)文件位置。worker_rlimit_nofile用于指定一個(gè)nginx進(jìn)程可以打開的最多文件描述符數(shù)目,這里是65535,需要使用命令“ulimit-n65535〃來(lái)設(shè)置。events指令是設(shè)定Nginx的工作模式及連接數(shù)上限。events{useepoll;worker_connections 65536;}use是個(gè)事件模塊指令,用來(lái)指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標(biāo)準(zhǔn)的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺(tái)上,而kqueue用在BSD系統(tǒng)中。對(duì)于Linux系統(tǒng),epoll工作模式是首選。worker_connections也是個(gè)事件模塊指令,用于定義Nginx每個(gè)進(jìn)程的最大連接數(shù),默認(rèn)是1024.最大客戶端連接數(shù)由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections,在作為反向代理時(shí),max_clients變?yōu)椋簃ax_clients=worker_processes*worker_connections/4。進(jìn)程的最大連接數(shù)受Linux系統(tǒng)進(jìn)程的最大打開文件數(shù)限制,在執(zhí)行操作系統(tǒng)命令“ulimit-n65536"后worker_connections的設(shè)置才能生效。2.HTTP服務(wù)器配置接下來(lái)開始進(jìn)行HTTP服務(wù)器設(shè)置。下面這段內(nèi)容是Nginx對(duì)HTTP服務(wù)器相關(guān)屬性的配置,代碼如下:http{include conf/mime.types;default_typeapplication/octet-stream;log_formatmain'$remote_addr-$remote_user[$time_local]''"$request"$status$bytes_sent''"$http_referer""$http_user_agent"''"$gzip_ratio"';log_formatdownload'$remote_addr-$remote_user[$time_local]'"$request"$status$bytes_sent''"$http_referer""$http_user_agent"''"$http_range""$sent_http_content_range"';client_max_body_size20m;TOC\o"1-5"\h\zclient_header_buffer_size 32K;large_client_header_buffers432k;Sendfileon;tcp_nopush on;tcp_nodelay on;keepalive_timeout60;client_header_timeout10;client_body_timeout 10;send_timeout 10;下面詳細(xì)介紹下這段代碼中每個(gè)配置選項(xiàng)的含義。include是個(gè)主模塊指令,實(shí)現(xiàn)對(duì)配置文件所包含的文件的設(shè)定,可以減少主配置文件的復(fù)雜度。類似于Apache中的include方法。default_type屬于HTTP核心模塊指令,這里設(shè)定默認(rèn)類型為二進(jìn)制流,也就是當(dāng)文件類型未定義時(shí)使用這種方式,例如在沒有配置PHP環(huán)境時(shí),Nginx是不予解析的,此時(shí),用瀏覽器訪問(wèn)PHP文件就會(huì)出現(xiàn)下載窗口。下面的代碼實(shí)現(xiàn)對(duì)日志格式的設(shè)定。log_formatmain'$remote_addr-$remote_user[$time_local]''"$request"$status$bytes_sent''"$http_referer""$http_user_agent"''"$gzip_ratio"';log_formatdownload'$remote_addr-$remote_user[$time_local]''"$request"$status$bytes_sent''"$http_referer""$http_user_agent"''"$http_range""$sent_http_content_range"';log_format是Nginx的HttpLog模塊指令,用于指定Nginx日志的輸出格式。main為此日志輸出格式的名稱,可以在下面的access_log指令中引用。client_max_body_size用來(lái)設(shè)置允許客戶端請(qǐng)求的最大的單個(gè)文件字節(jié)數(shù)。client_header_buffer_size用于指定來(lái)自客戶端請(qǐng)求頭的headerbuffer大小。對(duì)于大多數(shù)請(qǐng)求,1K的緩沖區(qū)大小已經(jīng)足夠,如果自定義了消息頭或有更大的Cookie,可以增加緩沖區(qū)大小。這里設(shè)置為32K。large_client_header_buffers用來(lái)指定客戶端請(qǐng)求中較大的消息頭的緩存最大數(shù)量和大小,“4〃為個(gè)數(shù),“128K〃為大小,最大緩存量為4個(gè)128K。sendfile參數(shù)用于開啟高效文件傳輸模式。將tcp_nopush和tcp_nodelay兩個(gè)指令設(shè)置為on用于防止網(wǎng)絡(luò)阻塞。keepalive_timeout設(shè)置客戶端連接保持活動(dòng)的超時(shí)時(shí)間。在超過(guò)這個(gè)時(shí)間之后,服務(wù)器會(huì)關(guān)閉該連接。client_header_timeout設(shè)置客戶端請(qǐng)求頭讀取超時(shí)時(shí)間。如果超過(guò)這個(gè)時(shí)間,客戶端還沒有發(fā)送任何數(shù)據(jù),Nginx將返回“Requesttimeout(408)”錯(cuò)誤。client_body_timeout設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間。如果超過(guò)這個(gè)時(shí)間,客戶端還沒有發(fā)送任何數(shù)據(jù),Nginx將返回“Requesttimeout(408)”錯(cuò)誤,默認(rèn)值是60。send_timeout指定響應(yīng)客戶端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶端沒有任何活動(dòng),Nginx將會(huì)關(guān)閉連接。3.HttpGzip模塊配置下面配置Nginx的HttpGzip模塊。這個(gè)模塊支持在線實(shí)時(shí)壓縮輸出數(shù)據(jù)流。要查看是否安裝了此模塊,需要使用下面的命令:[root@localhostconf]#/opt/nginx/sbin/nginx-Vnginxversion:nginx/0.7.65configurearguments:--with-http_stub_status_module--with-http_gzip_static_module--prefix=/opt/nginx通過(guò)/opt/nginx/sbin/nginx-V命令可以查看安裝Nginx時(shí)的編譯選項(xiàng),由輸出可知,我們已經(jīng)安裝了HttpGzip模塊。下面是HttpGzip模塊在Nginx配置中的相關(guān)屬性設(shè)置:gzipon;gzip_min_length1k;gzip_buffers416k;gzip_http_version1.1;gzip_comp_level2;gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;gzip_varyon;gzip用于設(shè)置開啟或者關(guān)閉gzip模塊,“gzipon”表示開啟GZIP壓縮,實(shí)時(shí)壓縮輸出數(shù)據(jù)流。gzip_min_length設(shè)置允許壓縮的頁(yè)面最小字節(jié)數(shù),頁(yè)面字節(jié)數(shù)從header頭的Content-Length中獲取。默認(rèn)值是0,不管頁(yè)面多大都進(jìn)行壓縮。建議設(shè)置成大于1K的字節(jié)數(shù),小于1K可能會(huì)越壓越大。gzip_buffers表示申請(qǐng)4個(gè)單位為16K的內(nèi)存作為壓縮結(jié)果流緩存,默認(rèn)值是申請(qǐng)與原始數(shù)據(jù)大小相同的內(nèi)存空間來(lái)存儲(chǔ)gzip壓縮結(jié)果。gzip_http_version用于設(shè)置識(shí)別HTTP協(xié)議版本,默認(rèn)是1.1,目前大部分瀏覽器已經(jīng)支持GZIP解壓,使用默認(rèn)即可。gzip_comp_level用來(lái)指定GZIP壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理最慢,也比較消耗cpu資源。gzip_types用來(lái)指定壓縮的類型,無(wú)論是否指定,“text/html”類型總是會(huì)被壓縮的。gzip_vary選項(xiàng)可以讓前端的緩存服務(wù)器緩存經(jīng)過(guò)GZIP壓縮的頁(yè)面,例如用Squid緩存經(jīng)過(guò)Nginx壓縮的數(shù)據(jù)。4.負(fù)載均衡配置下面設(shè)定負(fù)載均衡的服務(wù)器列表。upstreamixdba.net{ip_hash;server33:80;server34:80down;server35:8009max_fails=3fail_timeout=20s;server36:8080;}upstream是Nginx的HTTPUpstream模塊,這個(gè)模塊通過(guò)一個(gè)簡(jiǎn)單的調(diào)度算法來(lái)實(shí)現(xiàn)客戶端IP到后端服務(wù)器的負(fù)載均衡。在上面的設(shè)定中,通過(guò)upstream指令指定了一個(gè)負(fù)載均衡器的名稱。這個(gè)名稱可以任意指定,在后面需要的地方直接調(diào)用即可。Nginx的負(fù)載均衡模塊目前支持4種調(diào)度算法,下面進(jìn)行分別介紹,其中后兩項(xiàng)屬于第三方的調(diào)度方法。口輪詢(默認(rèn))。每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某臺(tái)服務(wù)器宕機(jī),故障系統(tǒng)被自動(dòng)剔除,使用戶訪問(wèn)不受影響??赪eight。指定輪詢權(quán)值,Weight值越大,分配到的訪問(wèn)機(jī)率越高,主要用于后端每個(gè)服務(wù)器性能不均的情況下??趇p_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)題?!鮢air。比上面兩個(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模塊。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軟件包。在HTTPUpstream模塊中,可以通過(guò)server指令指定后端服務(wù)器的IP地址和端口,同時(shí)還可以設(shè)定每個(gè)后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)。常用的狀態(tài)有:down,表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡。backup,預(yù)留的備份機(jī)器。當(dāng)其他所有的非backup機(jī)器出現(xiàn)故障或者忙的時(shí)候,才會(huì)請(qǐng)求backup機(jī)器,因此這臺(tái)機(jī)器的壓力最輕。max_fails,允許請(qǐng)求失敗的次數(shù),默認(rèn)為1。當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream模塊定義的錯(cuò)誤。fail_timeout,在經(jīng)歷了max_fails次失敗后,暫停服務(wù)的時(shí)間。max_fails可以和fail_timeout—起使用。注意當(dāng)負(fù)載調(diào)度算法為ip_hash時(shí),后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是weight和backup。5.server虛擬主機(jī)配置下面介紹對(duì)虛擬主機(jī)的配置。建議將對(duì)虛擬主機(jī)進(jìn)行配置的內(nèi)容寫進(jìn)另外一個(gè)文件,然后通過(guò)inelude指令包含進(jìn)來(lái),這樣更便于維護(hù)和管理。server{listen 80;server_name 88;indexindex.htmlindex.htmindex.jsp;root/web/wwwroot/charsetgb2312;server標(biāo)志定義虛擬主機(jī)開始,listen用于指定虛擬主機(jī)的服務(wù)端口,server_name用來(lái)指定IP地址或者域名,多個(gè)域名之間用空格分開。Index用于設(shè)定訪問(wèn)的默認(rèn)首頁(yè)地址,root指令用于指定虛擬主機(jī)的網(wǎng)頁(yè)根目錄,這個(gè)目錄可以是相對(duì)路徑,也可以是絕對(duì)路徑。Charset用于設(shè)置網(wǎng)頁(yè)的默認(rèn)編碼格式。access_loglogs/.access.logmain;access_log用來(lái)指定此虛擬主機(jī)的訪問(wèn)日志存放路徑,最后的main用于指定訪問(wèn)日志的輸出格式。6.URL匹配配置URL地址匹配是進(jìn)行Nginx配置中最靈活的部分。location支持正則表達(dá)式匹配,也支持條件判斷匹配,用戶可以通過(guò)location指令實(shí)現(xiàn)Nginx對(duì)動(dòng)、靜態(tài)網(wǎng)頁(yè)進(jìn)行過(guò)濾處理。以下這段設(shè)置是通過(guò)location指令來(lái)對(duì)網(wǎng)頁(yè)URL進(jìn)行分析處理,所有擴(kuò)展名以.gif、.jpg、.jpeg、.png、.bmp、.swf結(jié)尾的靜態(tài)文件都交給nginx處理,而expires用來(lái)指定靜態(tài)文件的過(guò)期時(shí)間,這里是30天。location~.*\.(gif|jpg|jpeg|png|bmp|swf)${root /web/wwwroot/www.ixdba.net;expires30d;}以下這段設(shè)置是將upload和html下的所有文件都交給nginx來(lái)處理,當(dāng)然,upload和html目錄包含在/web/wwwroot/目錄中。location~人/(upload|html)/{root /web/wwwroot/www.ixdba.net;expires30d;在最后這段設(shè)置中,location是對(duì)此虛擬主機(jī)下動(dòng)態(tài)網(wǎng)頁(yè)的過(guò)濾處理,也就是將所有以jsp為后綴的文件都交給本機(jī)的8080端口處理。location~.*.jsp${indexindex.jsp;proxy_passhttp://localhost:8080;}7.StubStatus模塊配置StubStatus模塊能夠獲取Nginx自上次啟動(dòng)以來(lái)的工作狀態(tài),此模塊非核心模塊,需要在Nginx編譯安裝時(shí)手工指定才能使用此功能。以下指令實(shí)指定啟用獲取Nginx工作狀態(tài)的功能。location/NginxStatus{stub_statuson;access_log logs/NginxStatus.log;auth_basic "NginxStatus";auth_basic_user_file../htpasswd;}stub_status設(shè)置為“on表示啟用StubStatus的工作狀態(tài)統(tǒng)計(jì)功能。access_log用來(lái)指定StubStatus模塊的訪問(wèn)日志文件。auth_basic是Nginx的一種認(rèn)證機(jī)制。auth_basic_user_file用來(lái)指定認(rèn)證的密碼文件,由于Nginx的auth_basic認(rèn)證采用的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西京學(xué)院《室內(nèi)陳設(shè)設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 音樂(lè)萬(wàn)馬奔騰課件
- 西京學(xué)院《版面設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《小學(xué)語(yǔ)文課程與教學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《水污染防治技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《攝影與攝像技藝》2021-2022學(xué)年第一學(xué)期期末試卷
- 9正確認(rèn)識(shí)廣告 說(shuō)課稿-2024-2025學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 電工高級(jí)工專項(xiàng)測(cè)試題及答案
- 第十二章第二節(jié)《滑輪》說(shuō)課稿 -2023-2024學(xué)年人教版八年級(jí)物理下冊(cè)
- 2024年代森錳鋅行業(yè)前景分析:代森錳鋅行業(yè)發(fā)展趨勢(shì)推動(dòng)行業(yè)國(guó)際化
- 基于PLC飲用水源初處理控制系統(tǒng)設(shè)計(jì)
- 制造業(yè)升級(jí)2024年的智能制造計(jì)劃
- 大學(xué)食品安全案例
- 《商不變的規(guī)律》教學(xué)課件
- 單位工程施工組織設(shè)計(jì)實(shí)例樣本
- 敬畏課堂 發(fā)言稿 國(guó)旗下的講話
- 平面設(shè)計(jì)工作室計(jì)劃書
- 子宮肌瘤卡通健康宣教
- 民警現(xiàn)場(chǎng)執(zhí)法執(zhí)勤規(guī)范
- 人教版(2019)選擇性必修第三冊(cè)Unit 1 Art 詞形變化課件
- 《科技節(jié)主題班會(huì)》課件
評(píng)論
0/150
提交評(píng)論