這篇文章主要為大家詳細介紹了PHP使用Nginx實現反向 Proxy的方法,具有一定的參考價值,感興趣的小夥伴們可以參考一下
一、Proxy 伺服器
1、什麼是Proxy 伺服器
Proxy 伺服器,客戶機在發送請求時,不會直接發送給目的主機,而是先發送給Proxy 伺服器,代理服務接受客戶機請求之後,再向主機發出,並接收目的主機返回的資料,存放在Proxy 伺服器的硬碟中,再發送給客戶機。
2、為什麼要使用Proxy 伺服器
1)提高訪問速度
由於目標主機返回的資料會存放在Proxy 伺服器的硬碟中,因此下一次客戶再訪問相同的網站資料時,會直接從Proxy 伺服器的硬碟中讀取,起到了緩衝的作用,尤其對於熱門網站能明顯提高請求速度。
2)防火牆作用
由於所有的客戶機請求都必須通過Proxy 伺服器訪問遠端站台,因此可在Proxy 伺服器上設限,過濾某些不安全資訊。
3)通過Proxy 伺服器訪問不能訪問的目標網站
互連網上有許多開發的Proxy 伺服器,客戶機在訪問受限時,可通過不受限的Proxy 伺服器訪問目標網站,通俗說,我們使用的翻牆瀏覽器就是利用了Proxy 伺服器,雖然不能出國,但也可直接存取外網。
二、反向 Proxy VS 正向 Proxy
1、什麼是正向 Proxy?什麼是反向 Proxy?
正向 Proxy,架設在客戶機與目標主機之間,只用於代理內部網路對Internet的串連請求,客戶機必須指定Proxy 伺服器,並將本來要直接發送到Web伺服器上的http請求發送到Proxy 伺服器中。
反向 Proxy伺服器架設在伺服器端,通過緩衝經常被請求的頁面來緩解伺服器的工作量,將客戶機請求轉寄給內部網路上的目標伺服器;並將從伺服器上得到的結果返回給Internet上請求串連的用戶端,此時Proxy 伺服器與目標主機一起對外表現為一個伺服器。
2、反向 Proxy有哪些主要應用?
現在許多大型web網站都用到反向 Proxy。除了可以防止外網對內網伺服器的惡性攻擊、緩衝以減少伺服器的壓力和訪問安全控制之外,還可以進行負載平衡,將使用者請求分配給多個伺服器。
三、方向Proxy 伺服器Nginx
Nginx作為近年來較火的反向 Proxy伺服器,安裝在目的主機端,主要用於轉寄客戶機請求,後台有多個http伺服器提供服務,nginx的功能就是把請求轉寄給後面的伺服器,決定哪台目標主機來處理當前請求。下面示範如何進行配置使Nginx發揮作用。
1、類比n個http伺服器作為目標主機
用作測試,簡單的使用2個tomcat執行個體類比兩台http伺服器,分別將tomcat的連接埠改為8081和8082
2、配置IP網域名稱
192.168.72.49 8081.max.com
192.168.72.49 8082.max.com
3、配置nginx.conf
upstream tomcatserver1 { server 192.168.72.49:8081; } upstream tomcatserver2 { server 192.168.72.49:8082; } server { listen 80; server_name 8081.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver1; index index.html index.htm; } } server { listen 80; server_name 8082.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver2; index index.html index.htm; } }
流程:
1)瀏覽器訪問8081.max.com,通過本地host檔案網域名稱解析,找到192.168.72.49伺服器(安裝nginx)
2)nginx反向 Proxy接受客戶機請求,找到server_name為8081.max.com的server節點,根據proxy_pass對應的http路徑,將請求轉寄到upstream tomcatserver1上,即連接埠號碼為8081的tomcat伺服器。
4、效果展示
請求8081.max.com,tomcat1接收返回首頁
請求8082.max.com,tomcat2接收返回首頁
四、總結
通過分析我們不難得出,以百度為例,如果客戶機的IP和百度伺服器(目標主機)的IP在同一個網段,那就形同區域網路內部發送請求,速度極快。
但如果滿足不了這種需求還想到達到一個較好的請求響應時,百度伺服器就可以對外提供一個與目標伺服器在一個網段的公網IP,也就是反向 Proxy服務的IP,通過Proxy 伺服器轉寄客戶機請求,決定幕後的N台伺服器誰來處理這個請求,並且由於反向 Proxy伺服器與目標主機在一個網段,訪問速度也會很快。
Nginx用作反向 Proxy伺服器時,它就是眾多反向 Proxy伺服器中的一種,通過簡單的配置,指定到伺服器IP或網域名稱地址便可將客戶機請求轉寄給指定伺服器處理請求。