nginx模塊處理流程一般是這樣的:
客戶端發(fā)送HTTP請求 –> Nginx基于配置文件中的位置選擇一個合適的處理模塊 ->(如果有)負載均衡模塊選擇一臺后端服務器 –> 處理模塊進行處理并把輸出緩沖放到第一個過濾模塊上 –> 第一個過濾模塊處理后輸出給第二個過濾模塊 –> 然后第二個過濾模塊又到第三個 –> 依此類推 –> 最后把回復發(fā)給客戶端
其中配置模塊,我們關(guān)注的就是nginx的配置文件
nginx默認的配置文件在/usr/local/nginx/conf/nginx.conf.
配置文件分為這樣幾個部分:
全局設(shè)置、event、http、upstream、server設(shè)置
其中:全局設(shè)置用于配置、
1、nginx的用戶和組;
2、nginx啟用的子進程數(shù);
3、錯誤日志路徑,以及日志的記錄級別;
4、nginx的pid的記錄文件;
event主要用于定義nginx的工作模式
1.nginx的工作事件模型(epoll,kqueue)
2、設(shè)置 每個進程的處理的連接數(shù)
http用于提供web的功能配置
1、文件類型定義文件 和默認文件類型;
2、自定義日志格式;
3、訪問日志設(shè)置
4、開啟服務響應頭部獨立發(fā)送;
5、設(shè)置連接的超時的時間;
6、是否啟用壓縮功能;
7、使用server定義虛擬主機
upstream表示負載服務器;
server 位于http內(nèi)部,用于配置虛擬主機,一個http下可以有多個虛擬主機的配置;
通過 upstream 和server 配合使用 ,可以配置特定訪問服務的負載服務器池;
可以通過upstream 和server 配合使用,配置反向代理服務;
如:
基于權(quán)重負載負載
#upstream表示負載服務器池,定義名字為www.lezhu.tv的服務器池upstream www.lezhu.tv {#server是服務器節(jié)點起始標簽,其后是節(jié)點地址,可為域名或IP,weight是權(quán)重,可以根據(jù)機器配置定義權(quán)重。weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大。ip_hash; #調(diào)度算法,默認是rr輪詢。server 172.16.1.7:80 weight=1;server 172.16.1.8:80 weight=1;server 172.16.1.9:80 weight=1 backup; #backup表示熱備} server { listen 80; #監(jiān)聽的端口,也可以是172.16.1.7:80形式 server_name www.lezhu.tv; #基于域名的虛擬主機 root html/blog; #站點根目錄,即網(wǎng)站程序放的目錄 location / { #默認訪問的location標簽段 index index.php index.htmlindex.htm; #首頁排序 } location ~.*.(php|php5)?$ { #符合php擴展名的請求調(diào)度到fcgi server fastcgi_pass 127.0.0.1:9000; #拋給本機的9000端口(php fastcgi server) fastcgi_index index.php; #設(shè)定動態(tài)首頁 include fastcgi.conf; #設(shè)定和fastcgi交互的相關(guān)參數(shù)包含文件 }#將符合靜態(tài)文件的圖片視頻流媒體等設(shè)定expries緩存參數(shù),要求
瀏覽器緩存。 location~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 10y; #客戶端緩存上述靜態(tài)數(shù)據(jù)10年}#將符合js,css文件的等設(shè)定expries緩存參數(shù),要求瀏覽器緩存。 location~ .*\.(js|css)?$ { expires 30d; #客戶端緩存上述js,css數(shù)據(jù)30天 } access_log /app/logs/www_access.log main; #根據(jù)日志格式記錄用戶訪問的日志 }
反向代理負載均衡配置
#upstream表示負載服務器池,定義名字為www.lezhu.tv的服務器池upstream www.lezhu.tv {#server是服務器節(jié)點起始標簽,其后是節(jié)點地址,可為域名或IP,weight是權(quán)重,可以根據(jù)機器配置定義權(quán)重。weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大。ip_hash; #調(diào)度算法,默認是rr輪詢。server 172.16.1.7:80 weight=1;server 172.16.1.8:80 weight=1;server 172.16.1.9:80 weight=1 backup; #backup表示熱備} server { listen 80; #監(jiān)聽的端口,也可以172.16.1.7:80形式 server_name www.lezhu.tv; #代理的服務域名 location / { #將訪問www.lezhu.tv的所有請求都發(fā)送到upstream定義的服務器節(jié)點池。 proxy_pass http://www.lezhu.tv; #在代理向后端服務器發(fā)送的http請求頭中加入host字段信息,用于當后端服務器配置有多個虛擬主機時,可以識別代理的是哪個虛擬主機。這是節(jié)點服務器多虛擬主機時的關(guān)鍵配置。 proxy_set_headerHost $host; #在代理向后端服務器發(fā)送的http請求頭中加入X-Forwarded-For字段信息,用于后端服務器程序、日志等接收記錄真實用戶的IP,而不是代理服務器的IP。 proxy_set_header X-Forwarded-For$remote_addr;#設(shè)定反向代理與后端節(jié)點服務器連接的超時時間,即發(fā)起握手等候響應的超時時間。 proxy_connect_timeout60;#設(shè)定代理后端服務器的數(shù)據(jù)回傳時間 proxy_send_timeout 60;#設(shè)定Nginx從代理的后端服務器獲取信息的時間 proxy_read_timeout 60;#設(shè)定緩沖區(qū)的大小 proxy_buffer_size 4k;#設(shè)定緩沖區(qū)的數(shù)量和大小。nginx從代理的后端服務器獲取的響應信息,會放置到緩沖區(qū)。 proxy_buffers 4 32k;#設(shè)定
系統(tǒng)很忙時可以使用的proxy_buffers大小 proxy_busy_buffers_size 64k;#設(shè)定proxy緩存臨時文件的大小 proxy_temp_file_write_size 64k;#對于以上參數(shù)的詳細理解可見本文開頭圖解。 }access_log off; #反向代理如果并發(fā)大,務必要關(guān)閉日志,否則IO吃緊。 }
程序動靜分離反向代理負載均衡配置
#upstream表示負載服務器池,定義名字為www.lezhu.tv的服務器池upstream www.lezhu.tv {#server是服務器節(jié)點起始標簽,其后是節(jié)點地址,可為域名或IP,weight是權(quán)重,可以根據(jù)機器配置定義權(quán)重。weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大。ip_hash; #調(diào)度算法,默認是rr輪詢。server 172.16.1.7:80 weight=1;server 172.16.1.8:80 weight=1;server 172.16.1.9:80 weight=1 backup; #backup表示熱備} server { listen 80; #監(jiān)聽的端口,也可以是172.16.1.7:80形式 server_name www.lezhu.tv; #代理的域名 root html/bbs; #程序目錄 index index.php index.html index.htm;#所有靜態(tài)文件由nginx服務處理location ~.*.(htm|html|gif|jpg|jpeg|png|swf|flv)$ { expires 3650d;}location ~ .*.(js|css)?$ { expires 30d;}#所有java相關(guān)擴展名均交由tomcat或resin服務處理。location ~ .(
jsp|jspx|do)?$ {#將訪問www.lezhu.tv的所有請求都發(fā)送到upstream定義的服務器節(jié)點池。proxy_pass http://127.0.0.1:8080;#在代理向后端服務器發(fā)送的http請求頭中加入host字段信息,用于當后端服務器配置有多個虛擬主機時,可以識別代理的是哪個虛擬主機。這是節(jié)點服務器多虛擬主機時的關(guān)鍵配置。 proxy_set_header Host $host; #在代理向后端服務器發(fā)送的http請求頭中加入X-Forwarded-For字段信息,用于后端服務器程序、日志等接收記錄真實用戶的IP,而不是代理服務器的IP。 proxy_set_headerX-Forwarded-For $remote_addr;} access_log /app/logs/bbs_access.log main; #記錄日志 }}
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。