了解正向代理與反向代理的差異
正向代理的概念
正向代理,也就是傳說中的代理,他的工作原理就像一個跳板,
簡單的說,
我是一個使用者,我訪問不了某網站,但是我能訪問一個代理伺服器
這個代理伺服器呢,他能訪問那個我不能訪問的網站
於是我先連上代理伺服器,告訴他我需要那個無法訪問網站的內容
代理伺服器去取回,然後返回給我
從網站的角度,只在代理伺服器來取內容的時候有一次記錄
有時並不知道是用戶的請求,也隱藏了用戶的資料,這取決於代理告不告訴網站
結論就是正向代理是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理程式發送一個請求並指定目標(原始伺服器),然後代理程式向原始伺服器轉交請求並將獲得的內容傳回給客戶端。客戶端必須要進行一些特別的設定才能使用正向代理。
啟用Apache代理模組
a2enmod proxy a2enmod proxy_http
設定正向代理程式很簡單,只需要在瀏覽器的Proxy選項裡加入你的Apache配置的vHost主機即可1.1 Apache配置httpd-vhosts.conf(以Windows下為例)
<VirtualHost *:80> ServerAdmin prograsliu@gmail.com DocumentRoot "D:/www/test" ServerName www.test.com ServerAlias test.com ErrorLog "logs/test.com-error.log" CustomLog "logs/test.com-access.log" common Alias /sublook "D:/www/test/look/sublook/" <Directory "D:/www/test"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> #正向代理设置 ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> </VirtualHost>
現在看正向代理設定那一段
ProxyRequests On:開啟Apache正向代理
ProxyVia On:控制位於代理伺服器鏈中的代理請求的流向
引用Apache2.2官方文件中對ProxyVia的解釋如下:
1.如果設定為預設值Off ,將不會採取特殊的處理。如果一個請求或應答包含"Via:"頭,將不進行任何修改而直接通過。
2.如果設定為On每個請求和應答都會對應目前主機得到一個"Via:"頭。
3.如果設定為Full ,每個產生的"Via:"頭中都會額外加入Apache伺服器的版本,以"Via:"註解網域出現。
4.如果設定為Block ,每個代理請求中的所有"Via:"頭行都將被刪除。且不會產生新的"Via:"頭。
<Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy>
此處設定為本機可以使用代理,真正使用的時候就自己設定了
1.2 瀏覽器設定(以FireFox為例)
##1.3 存取效果
訪問www.sina.com,觀察HTTP請求Response:
#可以看到,Via:www.test.com,正向代理成功了。
反向代理的概念
繼續範例:範例使用者造訪http://test.me/readme
但test. me上並不存在readme頁面
他是偷偷從另外一台伺服器上取回,然後作為自己的內容吐給用戶
结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
2.1 Apache设置
<VirtualHost *:80> ServerAdmin prograsliu@gmail.com DocumentRoot "D:/www/test" ServerName www.test.com ServerAlias test.com ErrorLog "logs/test.com-error.log" CustomLog "logs/test.com-access.log" common Alias /sublook "D:/www/test/look/sublook/" <Directory "D:/www/test"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> #反向代理设置 ProxyPass /proxy http://www.proxypass.com/proxy ProxyPassReverse /proxy http://www.proxypass.com/proxy </VirtualHost> <VirtualHost *:80> ServerAdmin prograsliu@gmail.com DocumentRoot "D:/www/proxypass" ServerName www.proxypass.com ServerAlias proxypass.com <Directory "D:/www/proxypass"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
现在看反向代理设置那一段
ProxyPass /proxy http://www.proxypass.com/proxy : 将 www.test.com/proxy 域下的所有请求转发给 www.proxypass.com/proxy 代理,例如 www.test.com/proxy/login.php 会交给 www.proxypass.com/proxy/login.php 代理
ProxyPassReverse /proxy http://www.proxypass.com/proxy :
www.proxypass.com/proxy/login.php 中有如下代码:
<?php header('Location: http://www.proxypass.com/proxy/result.php'); ?>
那么在重定向的时候,Apache会将HTTP请求重新设为 http://www.test.com/proxy/result.php, 这样的作用稍后讲解
www.proxypass.com/proxy/result.php 中有如下代码:
<?php echo 'in proxypass.com <br>'; ?>
2.2 浏览器访问效果
访问 www.test.com/proxy/login.php
Apache将请求交给 www.proxypass.com/proxy/login.php 代理,HTTP请求如图:
可以发现其实Request中的请求还是 www.test.com 的,但是它确实是由 www.proxypass.com 来处理的
proxypass.com/proxy/login.php 重定向到 proxypass.com/proxy/result.php
页面显示 in
proxypass.com
HTTP请求如图:
也可以看到请求依然是 www.test.com/proxy/result.php
这里就是 ProxyPassReverse 发挥作用的地方,如果不加这个项,重定向后HTTP请求会如下图:
可以发现请求中的GET是 www.proxypass.com 而不是 www.test.com ,这是因为配置了ProxyPassReverse后,proxypass.com/proxy/login.php 在重定向到 proxypass.com/proxy/result.php 时,Apache会将它调整回 test.com/proxy/result.php , 然后Apache再将 test.com/proxy/result.php 代理给 proxypass.com/proxy/result.php,所以说配置了
ProxyPassReverse 后,即使 proxypass.com/proxy 下的程序有重定向到其他 proxypss.com/proxy 的文件的(如 login.php 重定向到 result.php),你也不会在请求中发现 proxypass.com 的影子。
两者区别
从用途上来讲:
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性减少网络使用率。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
從安全性 來講:
正向代理程式允許客戶端透過它存取任意網站並且隱藏客戶端自身,因此你必須採取安全措施以確保僅為經過授權的客戶端提供服務。
反向代理對外都是透明的,訪客並不知道自己存取的是一個代理。
本文說明了正向代理與反向代理的區別,更多相關內容請關注php中文網。
相關推薦:
介紹自動登入google play下載app report 的相關內容
以上是了解正向代理與反向代理的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何在FastAPI中使用Nginx進行反向代理程式和負載平衡引言:FastAPI和Nginx是兩個非常受歡迎的Web開發工具。 FastAPI是一個高效能的Python框架,而Nginx則是一個強大的反向代理伺服器。結合這兩個工具,可以提高Web應用程式的效能和可靠性。在本文中,我們將學習如何在FastAPI中使用Nginx進行反向代理和負載平衡。什麼是反向代

Nginx是一款高效能、開源且多功能的Web伺服器,也被廣泛用作反向代理伺服器。反向代理伺服器可以用來提供負載平衡、高可用性、存取控制和流量控制等特性。本文將介紹Nginx反向代理程式中在存取控制和流量控制上的應用。一、存取控制IP位址黑名單/白名單Nginx可以透過設定IP位址黑名單或白名單來實現對請求的存取控制。黑名單中的IP位址將被拒絕訪問,而白名單中的I

隨著Web應用程式的快速發展,越來越多的企業傾向於使用Golang語言來進行開發。在Golang開發中,使用Gin框架是非常流行的選擇。 Gin框架是一個高效能的Web框架,使用了fasthttp作為HTTP引擎,並擁有輕量級且優雅的API設計。在本文中,我們將深入探討Gin框架中反向代理和請求轉發的應用。反向代理的概念反向代理的概念就是透過代理伺服器使從客戶

如何使用NginxProxyManager實現HTTPS協定下的反向代理近年來,隨著網際網路的普及和應用場景的多樣化,網站和應用程式的存取方式變得越來越複雜。為了提高網站的存取效率和安全性,許多網站開始採用反向代理來處理使用者的請求。而針對HTTPS協定的反向代理,在保護使用者隱私和確保通訊安全性方面扮演著重要的角色。本文將介紹如何使用NginxProxy

Nginx反向代理快取配置,實現靜態網頁存取加速簡介:隨著網際網路的快速發展,存取速度成為了網站運作中非常重要的因素。為了提高網頁的存取速度,我們可以使用Nginx反向代理快取技術來實現網頁的加速。本文將介紹如何使用Nginx設定反向代理快取來實現靜態網頁的加速。 Nginx反向代理快取設定:安裝Nginx:首先要安裝Nginx伺服器,可以透過apt-ge

利用NginxProxyManager實現反向代理的負載平衡策略NginxProxyManager是一款基於Nginx的代理程式管理工具,可以幫助我們輕鬆實現反向代理程式和負載平衡。透過設定NginxProxyManager,我們可以將請求分發給多個後端伺服器,以實現負載平衡,提高系統的可用性和效能。一、安裝並設定NginxProxyManager安

在使用反向代理時,可能會遇到無法存取的問題。特別是在使用 PHP 進行反向代理時,這個問題似乎更加突出。本文將介紹這個問題的常見原因和解決方法。

Nginx反向代理快取配置,提升網站存取速度引言:在網路時代,網站的存取速度是至關重要的。一個載入緩慢的網站會讓用戶感到不耐煩,並可能導致用戶流失。為了提升網站的存取速度,常見的方式是透過使用反向代理快取來減少伺服器的負載並加速頁面的載入。本文將介紹如何利用Nginx配置反向代理緩存,進而提升網站的存取速度。一、什麼是Nginx反向代理快取? Ngin
