輕量級HTTP服務(wù)器Ngin(配置與調(diào)試Ngin)_第1頁
輕量級HTTP服務(wù)器Ngin(配置與調(diào)試Ngin)_第2頁
輕量級HTTP服務(wù)器Ngin(配置與調(diào)試Ngin)_第3頁
輕量級HTTP服務(wù)器Ngin(配置與調(diào)試Ngin)_第4頁
輕量級HTTP服務(wù)器Ngin(配置與調(diào)試Ngin)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

輕量級HTTP月服務(wù)器Nginx(配置與調(diào)試Nginx)Nginx安裝完畢后,會產(chǎn)生相應(yīng)的安裝目錄,根據(jù)前面的安裝路徑,Nginx的配置文件路徑為/opt/nginx/conf,其中nginx.conf為Nginx的主配置文件。這里重點介紹下nginx.conf這個配置文件。Nginx配置文件主要分成四部分:main(全局設(shè)置)、server(主機設(shè)置)、upstream(負載均衡服務(wù)器設(shè)置)和location(URL匹配特定位置的設(shè)置)。main部分設(shè)置的指令將影響其他所有設(shè)置;server部分的指令主要用于指定主機和端口;upstream指令主要用于負載均衡,設(shè)置一系列的后端服務(wù)器;location部分用于匹配網(wǎng)頁位置。這四者之間的關(guān)系式:server繼承main,location繼承server,upstream既不會繼承其他設(shè)置也不會被繼承。在這四個部分當中,每個部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時每個部分還可以使用其他HTTP模塊指令,例如HttpSSL模塊、HttpGzipStatic模塊和HttpAddition模塊等。下面通過一個Nginx配置實例,詳細介紹下nginx.conf每個指令的含義。為了能更清楚地了解Nginx的結(jié)構(gòu)和每個配置選項的含義,這里按照功能點將Nginx配置文件分為7個部分逐次講解,下面就圍繞這7個部分進行介紹。1.Nginx的全局配置下面這段內(nèi)容是對Nginx的全局屬性配置,代碼如下:usernobodynobody;worker_processes4;error_loglogs/error.lognotice;pid logs/nginx.pid;worker」limit_nofile65535;events{useepoll;worker_connections 65536;}對上面這段代碼中每個配置選項的含義解釋如下:user是個主模塊指令,指定NginxWorker進程運行用戶以及用戶組,默認由nobody賬號運行。worker_processes是個主模塊指令,指定了Nginx要開啟的進程數(shù)。每個Nginx進程平均耗費10M~12M內(nèi)存。根據(jù)經(jīng)驗,一般指定一個進程足夠了,如果是多核CPU,建議指定和CPU的數(shù)量一樣的進程數(shù)即可。error_log是個主模塊指令,用來定義全局錯誤日志文件。日志輸出級別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日志最為最詳細,而crit輸出日志最少。pid是個主模塊指令,用來指定進程id的存儲文件位置。worker_rlimit_nofile用于指定一個nginx進程可以打開的最多文件描述符數(shù)目,這里是65535,需要使用命令“ulimit-n65535〃來設(shè)置。events指令是設(shè)定Nginx的工作模式及連接數(shù)上限。events{useepoll;worker_connections 65536;}use是個事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統(tǒng)中。對于Linux系統(tǒng),epoll工作模式是首選。worker_connections也是個事件模塊指令,用于定義Nginx每個進程的最大連接數(shù),默認是1024.最大客戶端連接數(shù)由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections,在作為反向代理時,max_clients變?yōu)椋簃ax_clients=worker_processes*worker_connections/4。進程的最大連接數(shù)受Linux系統(tǒng)進程的最大打開文件數(shù)限制,在執(zhí)行操作系統(tǒng)命令“ulimit-n65536"后worker_connections的設(shè)置才能生效。2.HTTP服務(wù)器配置接下來開始進行HTTP服務(wù)器設(shè)置。下面這段內(nèi)容是Nginx對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;下面詳細介紹下這段代碼中每個配置選項的含義。include是個主模塊指令,實現(xiàn)對配置文件所包含的文件的設(shè)定,可以減少主配置文件的復(fù)雜度。類似于Apache中的include方法。default_type屬于HTTP核心模塊指令,這里設(shè)定默認類型為二進制流,也就是當文件類型未定義時使用這種方式,例如在沒有配置PHP環(huán)境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP文件就會出現(xiàn)下載窗口。下面的代碼實現(xiàn)對日志格式的設(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用來設(shè)置允許客戶端請求的最大的單個文件字節(jié)數(shù)。client_header_buffer_size用于指定來自客戶端請求頭的headerbuffer大小。對于大多數(shù)請求,1K的緩沖區(qū)大小已經(jīng)足夠,如果自定義了消息頭或有更大的Cookie,可以增加緩沖區(qū)大小。這里設(shè)置為32K。large_client_header_buffers用來指定客戶端請求中較大的消息頭的緩存最大數(shù)量和大小,“4〃為個數(shù),“128K〃為大小,最大緩存量為4個128K。sendfile參數(shù)用于開啟高效文件傳輸模式。將tcp_nopush和tcp_nodelay兩個指令設(shè)置為on用于防止網(wǎng)絡(luò)阻塞。keepalive_timeout設(shè)置客戶端連接保持活動的超時時間。在超過這個時間之后,服務(wù)器會關(guān)閉該連接。client_header_timeout設(shè)置客戶端請求頭讀取超時時間。如果超過這個時間,客戶端還沒有發(fā)送任何數(shù)據(jù),Nginx將返回“Requesttimeout(408)”錯誤。client_body_timeout設(shè)置客戶端請求主體讀取超時時間。如果超過這個時間,客戶端還沒有發(fā)送任何數(shù)據(jù),Nginx將返回“Requesttimeout(408)”錯誤,默認值是60。send_timeout指定響應(yīng)客戶端的超時時間。這個超時僅限于兩個連接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關(guān)閉連接。3.HttpGzip模塊配置下面配置Nginx的HttpGzip模塊。這個模塊支持在線實時壓縮輸出數(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通過/opt/nginx/sbin/nginx-V命令可以查看安裝Nginx時的編譯選項,由輸出可知,我們已經(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ù)據(jù)流。gzip_min_length設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭的Content-Length中獲取。默認值是0,不管頁面多大都進行壓縮。建議設(shè)置成大于1K的字節(jié)數(shù),小于1K可能會越壓越大。gzip_buffers表示申請4個單位為16K的內(nèi)存作為壓縮結(jié)果流緩存,默認值是申請與原始數(shù)據(jù)大小相同的內(nèi)存空間來存儲gzip壓縮結(jié)果。gzip_http_version用于設(shè)置識別HTTP協(xié)議版本,默認是1.1,目前大部分瀏覽器已經(jīng)支持GZIP解壓,使用默認即可。gzip_comp_level用來指定GZIP壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理最慢,也比較消耗cpu資源。gzip_types用來指定壓縮的類型,無論是否指定,“text/html”類型總是會被壓縮的。gzip_vary選項可以讓前端的緩存服務(wù)器緩存經(jīng)過GZIP壓縮的頁面,例如用Squid緩存經(jīng)過Nginx壓縮的數(shù)據(jù)。4.負載均衡配置下面設(shè)定負載均衡的服務(wù)器列表。upstreamixdba.net{ip_hash;server33:80;server34:80down;server35:8009max_fails=3fail_timeout=20s;server36:8080;}upstream是Nginx的HTTPUpstream模塊,這個模塊通過一個簡單的調(diào)度算法來實現(xiàn)客戶端IP到后端服務(wù)器的負載均衡。在上面的設(shè)定中,通過upstream指令指定了一個負載均衡器的名稱。這個名稱可以任意指定,在后面需要的地方直接調(diào)用即可。Nginx的負載均衡模塊目前支持4種調(diào)度算法,下面進行分別介紹,其中后兩項屬于第三方的調(diào)度方法。口輪詢(默認)。每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端某臺服務(wù)器宕機,故障系統(tǒng)被自動剔除,使用戶訪問不受影響??赪eight。指定輪詢權(quán)值,Weight值越大,分配到的訪問機率越高,主要用于后端每個服務(wù)器性能不均的情況下??趇p_hash。每個請求按訪問IP的hash結(jié)果分配,這樣來自同一個IP的訪客固定訪問一個后端服務(wù)器,有效解決了動態(tài)網(wǎng)頁存在的session共享問題。□fair。比上面兩個更加智能的負載均衡算法。此種算法可以依據(jù)頁面大小和加載時間長短智能地進行負載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。Nginx本身是不支持fair的,如果需要使用這種調(diào)度算法,必須下載Nginx的upstream_fair模塊。url_hash。按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,可以進一步提高后端緩存服務(wù)器的效率。Nginx本身是不支持url_hash的,如果需要使用這種調(diào)度算法,必須安裝Nginx的hash軟件包。在HTTPUpstream模塊中,可以通過server指令指定后端服務(wù)器的IP地址和端口,同時還可以設(shè)定每個后端服務(wù)器在負載均衡調(diào)度中的狀態(tài)。常用的狀態(tài)有:down,表示當前的server暫時不參與負載均衡。backup,預(yù)留的備份機器。當其他所有的非backup機器出現(xiàn)故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。max_fails,允許請求失敗的次數(shù),默認為1。當超過最大次數(shù)時,返回proxy_next_upstream模塊定義的錯誤。fail_timeout,在經(jīng)歷了max_fails次失敗后,暫停服務(wù)的時間。max_fails可以和fail_timeout—起使用。注意當負載調(diào)度算法為ip_hash時,后端服務(wù)器在負載均衡調(diào)度中的狀態(tài)不能是weight和backup。5.server虛擬主機配置下面介紹對虛擬主機的配置。建議將對虛擬主機進行配置的內(nèi)容寫進另外一個文件,然后通過inelude指令包含進來,這樣更便于維護和管理。server{listen 80;server_name 88;indexindex.htmlindex.htmindex.jsp;root/web/wwwroot/charsetgb2312;server標志定義虛擬主機開始,listen用于指定虛擬主機的服務(wù)端口,server_name用來指定IP地址或者域名,多個域名之間用空格分開。Index用于設(shè)定訪問的默認首頁地址,root指令用于指定虛擬主機的網(wǎng)頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。Charset用于設(shè)置網(wǎng)頁的默認編碼格式。access_loglogs/.access.logmain;access_log用來指定此虛擬主機的訪問日志存放路徑,最后的main用于指定訪問日志的輸出格式。6.URL匹配配置URL地址匹配是進行Nginx配置中最靈活的部分。location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現(xiàn)Nginx對動、靜態(tài)網(wǎng)頁進行過濾處理。以下這段設(shè)置是通過location指令來對網(wǎng)頁URL進行分析處理,所有擴展名以.gif、.jpg、.jpeg、.png、.bmp、.swf結(jié)尾的靜態(tài)文件都交給nginx處理,而expires用來指定靜態(tài)文件的過期時間,這里是30天。location~.*\.(gif|jpg|jpeg|png|bmp|swf)${root /web/wwwroot/www.ixdba.net;expires30d;}以下這段設(shè)置是將upload和html下的所有文件都交給nginx來處理,當然,upload和html目錄包含在/web/wwwroot/目錄中。location~人/(upload|html)/{root /web/wwwroot/www.ixdba.net;expires30d;在最后這段設(shè)置中,location是對此虛擬主機下動態(tài)網(wǎng)頁的過濾處理,也就是將所有以jsp為后綴的文件都交給本機的8080端口處理。location~.*.jsp${indexindex.jsp;proxy_passhttp://localhost:8080;}7.StubStatus模塊配置StubStatus模塊能夠獲取Nginx自上次啟動以來的工作狀態(tài),此模塊非核心模塊,需要在Nginx編譯安裝時手工指定才能使用此功能。以下指令實指定啟用獲取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)計功能。access_log用來指定StubStatus模塊的訪問日志文件。auth_basic是Nginx的一種認證機制。auth_basic_user_file用來指定認證的密碼文件,由于Nginx的auth_basic認證采用的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論