兩大功能
1.Http代理?
反向代理:作為web服務(wù)器最常用的功能之一忙菠,尤其是反向代理何鸡,Nginx可以根據(jù)不同的正則匹配,采取不同的轉(zhuǎn)發(fā)策略牛欢,比如圖片文件結(jié)尾的走文件服務(wù)器骡男,動(dòng)態(tài)頁面走web服務(wù)器,只要你正則寫的沒問題傍睹,又有相對(duì)應(yīng)的服務(wù)器解決方案隔盛,你就可以隨心所欲的玩。并且Nginx對(duì)返回結(jié)果進(jìn)行錯(cuò)誤頁跳轉(zhuǎn)焰望,異常判斷等骚亿。如果被分發(fā)的服務(wù)器存在異常,他可以將請(qǐng)求重新轉(zhuǎn)發(fā)給另外一臺(tái)服務(wù)器熊赖,然后自動(dòng)去除異常服務(wù)器来屠。
2、負(fù)載均衡
Nginx提供的負(fù)載均衡策略有2種:內(nèi)置策略和擴(kuò)展策略。內(nèi)置策略為輪詢俱笛,加權(quán)輪詢捆姜,Ip hash。輪詢?yōu)檎?qǐng)求平均分配迎膜,加權(quán)輪詢則為為某幾臺(tái)設(shè)置權(quán)重泥技,優(yōu)先訪問。
3磕仅、web緩存
Nginx可以對(duì)不同的文件做不同的緩存處理珊豹,配置靈活,并且支持FastCGI_Cache榕订,主要用于對(duì)FastCGI的動(dòng)態(tài)程序進(jìn)行緩存店茶。配合著第三方的ngx_cache_purge,對(duì)制定的URL緩存內(nèi)容可以的進(jìn)行增刪管理劫恒。
nginx 文件結(jié)構(gòu)
...??????????????#全局塊
events {?????????#events塊
???...}
http ?????#http塊{
????...???#http全局塊
????server ???????#server塊
????{?
????????...???????#server全局塊
????????location [PATTERN]???#location塊
????????{
????????????...
????????}
????????location [PATTERN]?
????????{
????????????...
????????}
????}
????server
????{
??????...
????}
????...?????#http全局塊}
[if !supportLists]·?[endif]1贩幻、全局塊:配置影響nginx全局的指令。一般有運(yùn)行nginx服務(wù)器的用戶組两嘴,nginx進(jìn)程pid存放路徑丛楚,日志存放路徑,配置文件引入憔辫,允許生成worker process數(shù)等趣些。
[if !supportLists]·?[endif]2、events塊:配置影響nginx服務(wù)器或與用戶的網(wǎng)絡(luò)連接螺垢。有每個(gè)進(jìn)程的最大連接數(shù)喧务,選取哪種事件驅(qū)動(dòng)模型處理連接請(qǐng)求,是否允許同時(shí)接受多個(gè)網(wǎng)路連接枉圃,開啟多個(gè)網(wǎng)絡(luò)連接序列化等。
[if !supportLists]·?[endif]3庐冯、http塊:可以嵌套多個(gè)server孽亲,配置代理,緩存展父,日志定義等絕大多數(shù)功能和第三方模塊的配置返劲。如文件引入,mime-type定義栖茉,日志自定義篮绿,是否使用sendfile傳輸文件,連接超時(shí)時(shí)間吕漂,單連接請(qǐng)求數(shù)等亲配。
[if !supportLists]·?[endif]4、server塊:配置虛擬主機(jī)的相關(guān)參數(shù),一個(gè)http中可以有多個(gè)server吼虎。
[if !supportLists]·?[endif]5犬钢、location塊:配置請(qǐng)求的路由,以及各種頁面的處理情況思灰。
簡單的反向代理:
先是server塊:
Listen是nginx監(jiān)聽的端口玷犹,server_name則是監(jiān)聽的域名或者網(wǎng)址,只有當(dāng)外部訪問兩者都與服務(wù)器中nginx相匹配時(shí)才能夠使這個(gè)連接進(jìn)入nginx進(jìn)行代理操作洒疚。
按照上面nginx配置與歹颓,當(dāng)訪問 xxxx.com 時(shí) ?進(jìn)入服務(wù)器的/var/www/pc/
訪問http://xxxxx.com/images進(jìn)入/var/www/images中
訪問http://xxxxx.com/service時(shí)
進(jìn)入服務(wù)器內(nèi)部8080端口http://172.17.245.243:8080/
即外部訪問http://xxxx.com/service//childAccount/queryChild.user時(shí)
進(jìn)到服務(wù)器內(nèi)部這個(gè)連接則被代理到
http://172.17.245.243:8080/childAccount/queryChild.user
簡單的負(fù)載均衡配置:
upstream tomcatserver1?{ ?
????server 192.168.72.49:8080 weight=3; ?
????server 192.168.72.49:8081; ?
????}? ?
?server { ?
????????listen ??????80; ?
????????server_name ?8080.max.com; ?
????????#charset koi8-r; ?
????????#access_log ?logs/host.access.log ?main; ?
????????location / { ?
????????????proxy_pass ??http://tomcatserver1; ?
????????????index ?index.html index.htm; ?
????????} ?
?????}
通過以上配置,便可以實(shí)現(xiàn)油湖,在訪問8080.max.com這個(gè)網(wǎng)站時(shí)巍扛,由于配置了proxy_pass地址,所有請(qǐng)求都會(huì)先通過nginx反向代理服務(wù)器肺魁,在服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給目的主機(jī)時(shí)电湘,讀取upstream為 tomcatsever1的地址,讀取分發(fā)策略鹅经,配置tomcat1權(quán)重為3寂呛,所以nginx會(huì)將大部分請(qǐng)求發(fā)送給49服務(wù)器上的tomcat1,也就是8080端口瘾晃;較少部分給tomcat2來實(shí)現(xiàn)有條件的負(fù)載均衡贷痪。