資源描述:
《使用nginx搭建反向代理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、引言:最近公司有臺(tái)服務(wù)器遭受DDOS攻擊,流量在70M以上,由于服務(wù)器硬件配置較高所以不需要DDOS硬件防火墻。但我們要知道,IDC機(jī)房是肯定不允許這種流量一直處于這么高的,因?yàn)闆]法具體知道后面陸續(xù)攻擊的流量會(huì)有多大,如果流量過大就會(huì)導(dǎo)致整個(gè)IDC網(wǎng)絡(luò)癱瘓。我們都知道北方的數(shù)據(jù)中心和南方的數(shù)據(jù)中心從帶寬出口上來講南方多數(shù)機(jī)房完全有能力扛得住DDOS攻擊,東莞的電信機(jī)房就不錯(cuò)。有朋友說過面對(duì)這種攻擊可以在南方電信在放一臺(tái)服務(wù)器,然后做個(gè)反向代理;令我不解的是倘若再在南方放一臺(tái)服務(wù)器,然后在南方電信服務(wù)器上做反向代理的話北方的用戶訪問速度肯
2、定會(huì)很慢(南方機(jī)房多為電信單線,北京的多為雙線或BGP線路)。好了,我們言歸正傳,不管用反向代理是怎么去實(shí)現(xiàn),首先我們要解決的是如何搭建一臺(tái)反向代理服務(wù)器,免得臨時(shí)抱佛腳。???????????首先我們來看理解一下什么是反向代理,如下圖:當(dāng)客戶機(jī)向站點(diǎn)發(fā)出請(qǐng)求時(shí),請(qǐng)求將轉(zhuǎn)到代理服務(wù)器,然后然后代理服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給Internet上請(qǐng)求連接的客戶,對(duì)于訪問服務(wù)器的用戶來講,此時(shí)的代理服務(wù)器對(duì)外就表現(xiàn)為一臺(tái)服務(wù)器;我們還可以在反向代理服務(wù)器上加上一些策略,這樣就對(duì)web服務(wù)器進(jìn)行了一種安全
3、保護(hù),即使用戶想入侵網(wǎng)站,也無法到達(dá)web服務(wù)器;反向代理服務(wù)器后端還可以放置多臺(tái)web服務(wù)器,從而可以減輕網(wǎng)站壓力,起到集群作用????????我們都知道Nginx是一款非常不錯(cuò)的程序,其最大的優(yōu)點(diǎn)就是能承載高并發(fā)連接,這次我們就用Nginx來做一臺(tái)反向代理服務(wù)器環(huán)境描述:反向代理服務(wù)器為L(zhǎng)inux系統(tǒng),安裝有Nginx;web服務(wù)器為windows系統(tǒng),裝有IIS目標(biāo):客戶端在訪問192.168.1.20的時(shí)候得到的內(nèi)容必須是192.168.1.10這臺(tái)web服務(wù)器上的內(nèi)容首先我們?cè)贜ginx上設(shè)置反向代理,修改Nginx配置文件,
4、將如下部分刪除???????刪除完成后添加內(nèi)容如下:???servername在真實(shí)環(huán)境中需要設(shè)置域名,因?yàn)槲覀儗?shí)際訪問網(wǎng)站很少用IP,proxy_pass為web服務(wù)器的地址,如web服務(wù)器的網(wǎng)站用的是8080端口,那么我們的proxy_pass的格式就是http://web網(wǎng)站IP或者域名:8080??server???????{???????listen?????????80;???????server_name????192.168.1.20;???//反向代理服務(wù)器IP???????location/{????????????
5、???proxy_pass?????????????http://192.168.1.10;????//web服務(wù)器IP???????????????proxy_redirect?????????off;???????????????proxy_set_header???????X-Real-IP??????$remote_addr;???????????????proxy_set_header???????X-Forwarded-For$proxy_add_x_forwarded_for;???????????????}???????
6、#error_page?404?????????????/404.html;???????????設(shè)置完成后執(zhí)行/usr/local/nginx/sbin/nginx-t檢查配置是否正常,如果顯示:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok??configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful則正常,否則按錯(cuò)誤提示進(jìn)行修改。檢查配置文件無誤后殺死Nginx進(jìn)程,然后重新啟動(dòng)Ng
7、inx。這時(shí)候客戶端訪問192.168.1.20這臺(tái)服務(wù)器得到的就是192.168.1.10服務(wù)器上面的內(nèi)容了。???????????如下圖,用戶在訪問192.168.1.20時(shí),192.168.1.10這臺(tái)服務(wù)器的IIS記錄了訪問日志,顯示的均為192.168.1.20訪問的,而不是客戶端