1. 程式人生 > >Apache配置正向代理與反向代理

Apache配置正向代理與反向代理

配置正向代理很簡單,此處我們配置vhost來實現代理, 只需要在瀏覽器的Proxy選項里加入你的Apache配置的vHost主機即可

1.1 開啟Apache代理模組並引入vhost配置檔案

早http.conf開啟代理模組

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules
/mod_proxy_http.so

引入vhost檔案

Include conf/extra/httpd-vhosts.conf

如果你想監聽別的埠, 修改Listen引數

Listen 80
Listen 8087
Listen 8088

將想監聽的埠全都寫上,相應的, 在vhost檔案裡寫上

NameVirtualHost *:80
NameVirtualHost *:8087
NameVirtualHost *:8088

NameVirtualHost表示vhost匹配的請求的ip和埠那些會取掃描vhost

1.1 Apache配置 httpd-vhosts.conf(以Windows下為例)

複製程式碼
<VirtualHost *:80>
    ServerAdmin [email protected]
    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>
複製程式碼

 先看

<VirtualHost *:80>

  VirtualHost 後面的引數表示的是該VHost的IP/域名/和埠, 你可以寫 :

  (1) IP: port, 例如 <VirtualHost 175.2.22.65:8088>, 訪問的時候通過IP訪問

    (2) Domain, 例如 <VirtualHost www.test1.com>, 訪問的時候通過域名訪問, 也可以指定裡面的ServerName來指定域名

      (3) *, 表示匹配所有對Apache監聽主機的請求, 只要是apache監聽到的請求都可以匹配該虛擬主機

     此處表示的就是監聽所有80埠的請求, 但是由於ServerName裡寫了www.test.com, 所以這個vhost匹配的是www.test.com:80,

  現在看正向代理設定那一段

  • ProxyRequests On:開啟Apache正向代理
  • ProxyVia On:控制位於代理伺服器鏈中的代理請求的流向

  引用Apache2.2官方文件中對ProxyVia的解釋如下:

    1. 如果設定為預設值Off ,將不會採取特殊的處理。如果一個請求或應答包含"Via:"頭,將不進行任何修改而直接通過。
    2. 如果設定為On每個請求和應答都會對應當前主機得到一個"Via:"頭。
    3. 如果設定為Full ,每個產生的"Via:"頭中都會額外加入Apache伺服器的版本,以"Via:"註釋域出現。
    4. 如果設定為Block ,每個代理請求中的所有"Via:"頭行都將被刪除。且不會產生新的"Via:"頭。
  • <Proxy *>...</Proxy>:用來控制誰可以訪問你的代理
1 <Proxy *>
2     Order deny,allow
3     Deny from all
4     Allow from 127.0.0.1
5 </Proxy>

     此處設定為本機可以使用代理,真正使用的時候就自己設定了

1.2 瀏覽器設定(以FireFox為例)

1.3 訪問效果

訪問 www.sina.com,觀察HTTP請求Response:

可以看到,Via:www.test.com,正向代理成功了。

2. 反向代理

2.1 Apache設定

複製程式碼
 1 <VirtualHost *:80>
 2     ServerAdmin [email protected]
 3     DocumentRoot "D:/www/test"
 4     ServerName www.test.com
 5     ServerAlias test.com
 6     ErrorLog "logs/test.com-error.log"
 7     CustomLog "logs/test.com-access.log" common    
 8     Alias /sublook "D:/www/test/look/sublook/"
 9     <Directory "D:/www/test">
10         Options FollowSymLinks
11         AllowOverride All
12         Order allow,deny
13         Allow from all
14     </Directory>
15     
16     #反向代理設定
17     ProxyPass /proxy http://www.proxypass.com/proxy
18     ProxyPassReverse /proxy http://www.proxypass.com/proxy
19 
20 </VirtualHost>
21 
22 <VirtualHost *:80>
23     ServerAdmin [email protected]
24     DocumentRoot "D:/www/proxypass"
25     ServerName www.proxypass.com
26     ServerAlias proxypass.com
27     <Directory "D:/www/proxypass">
28         Options FollowSymLinks
29         AllowOverride All
30         Order allow,deny
31         Allow from all
32     </Directory>
33 </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 中有如下程式碼:

1 <?php
2     header('Location: http://www.proxypass.com/proxy/result.php');
3 ?>

       那麼在重定向的時候,Apache會將HTTP請求重新設為 http://www.test.com/proxy/result.php, 這樣的作用稍後講解

      www.proxypass.com/proxy/result.php 中有如下程式碼:  

1 <?php
2     echo 'in proxypass.com <br>';
3 ?>

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 的影子

相關推薦

Apache 正向代理反向代理配置

Apache提供了 mod_proxy 模組用於提供代理服務,能夠支援的包括正向代理、反向代理、透明代理、快取、負載均衡,HTTP代理、FTP代理、SSL代理等若干強大的功能。配置代理方法很簡單那,首先在 Apache 上啟用 mod_proxy 模組,需要注意的是,如果在

Apache配置正向代理反向代理

配置正向代理很簡單,此處我們配置vhost來實現代理, 只需要在瀏覽器的Proxy選項里加入你的Apache配置的vHost主機即可 1.1 開啟Apache代理模組並引入vhost配置檔案 早http.conf開啟代理模組 LoadModule proxy_module modules/mod_pr

Linux 基礎 Apache正向代理反向代理

一、正向代理 一、概念:         正向代理,意思是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服

正向代理反向代理的區別

高流量 反向代理 網站 代理軟件 shadows 們的 上網 正向代理 .cn 在計算機世界,代理可分為正向代理和反向代理,比如著名的FQ軟件Shadowsocks就是一款正向代理軟件,全世界前1000的高流量網站都在用的Web服務器Nginx作為反向代理服務器,那麽兩者之

正向代理反向代理

技術分享 origin pan 角色 blank 決定 -o lightbox box 正向代理 A同學在大眾創業、萬眾創新的大時代背景下開啟他的創業之路,目前他遇到的最大的一個問題就是啟動資金,於是他決定去找馬雲爸爸借錢,可想而知,最後碰一鼻子灰回來了,情急之下,他想到一

正向代理反向代理的差別

一個 域名 markdown 他能 mar ext internet down client 本文轉載自 : 正向代理與反向代理的差別 一、正向代理的概念   正向代理,也就是傳說中的代理,他的工作原理就像一個跳板,簡單的說,我是一個用戶,我訪問

Nginx教程(7) 正向代理反向代理【總結】

資料 用戶訪問 認證 origin 訪問者 發送 -128 負載 行為 1、前言   最近工作中用到反向代理,發現網絡代理的玩法還真不少,網絡背後有很多需要去學習。而在此之前僅僅使用了過代理軟件,曾經為了訪問google,使用了代理軟件,需要在瀏覽器中配置代理的地址。我只知

正向代理反向代理通俗理解

strong 多臺 回來 服務端 自己 作用 比喻 bsp 進行 代理,字面意義上來說,他就是相當於一個中間人這麽個概念。 帶到項目中也一樣,那麽來這樣一個比喻。 用戶(客戶端) 代理(正,反) 提供者(服務端)。 正向代理: 把整個流程比如成去飯店吃飯,我們也就是用戶(

正向代理反向代理【總結】

blank 資源 區別 客戶 得到 方式 接受 研究 waf 1、前言 轉載自:https://www.cnblogs.com/Anker/p/6056540.html   最近工作中用到反向代理,發現網絡代理的玩法還真不少,網絡背後有很多需要去學習。而在此之前僅僅使用了過

淺析Nginx 正向代理反向代理

uri 淺析 上網 通訊 服務器 消費者 blog .com json 1、正向代理和反向代理的概念 無論是正向代理,還是反向代理,說到底,就是代理模式的衍生版本罷了。我們都學習過代理設計模式,都知道代理模式中有代理角色和被代理角色,為什麽這麽說,因為這兩個角色對於我們理解

針對nginx,我們來具體聊聊正向代理反向代理區別

先來說說什麼是代理伺服器? 所謂代理伺服器就是位於發起請求的客戶端與原始伺服器端之間的一臺跳板伺服器,正向代理可以隱藏客戶端,反向代理可以隱藏原始伺服器。 如果你對這句話還不是特別瞭解,那麼接下來我們就詳細聊聊正向代理和反向代理的區別。   正向代理 假如你常用的電腦想

關於正向代理反向代理的理解

關於正向代理與反向代理的理解 這篇文章寫的已經非常清晰具體了,感謝作者。 https://www.cnblogs.com/Anker/p/6056540.html   正向代理的代理伺服器,是一箇中間者。(為了訪問,客戶端無法直接訪問的伺服器,說是代理伺服器,個人覺得,更像是現實生活中海外的

通俗理解正向代理反向代理

正向代理的概念 正向代理,也就是傳說中的代理,他的工作原理就像一個跳板, 簡單的說, 我是一個使用者,我訪問不了某網站,但是我能訪問一個代理伺服器 這個代理伺服器呢,他能訪問那個我不能訪問的網站 於是我先連上代理伺服器,告訴他我需要那個無法訪問網站的內容 代理伺服器去取回

Nginx、正向代理反向代理

Nginx的產生 沒有聽過Nginx?那麼一定聽過它的“同行”Apache吧!Nginx同Apache一樣都是一種WEB伺服器。基於REST架構風格,以統一資源描述符(Uniform Resources Identifier)URI或者統一資源定位符(Uniform R

簡述正向代理反向代理

代理伺服器 Proxy Serve 提供代理服務的電腦系統或其它型別的網路終端,代替網路使用者去取得網路資訊。 為什麼使用代理伺服器 提高訪問速度 由於目標主機返回的資料會存放在代理伺服器的硬碟中,因此下一次客戶再訪問相同的站點資料時,會直接從代理伺服器的硬碟中讀取,起

正向代理反向代理(squid)

正向代理 正向代理:是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。 正向代理的典型用途是為在防火牆內的區域網客

正向代理反向代理(轉)

正向代理與反向代理【總結】 1、前言   最近工作中用到反向代理,發現網路代理的玩法還真不少,網路背後有很多需要去學習。而在此之前僅僅使用了過代理軟體,曾經為了訪問google,使用了代理軟體,需要在瀏覽器中配置代理的地址。我只知道有代理這個概念,並不清楚代理還有正向和反向之分,於是趕緊學習

最通俗易懂地解釋:正向代理反向代理

題圖:柏林牆 本文來自劉志軍的投稿,微信公眾號“Python之禪” 維基百科對「代理伺服器」的解釋也是讓人一頭霧水,在計算機世界,代理可分為「正向代理」和「反向代理」,比

http正向代理反向代理

轉自:https://baijiahao.baidu.com/s?id=1566988836622068&wfr=spider&for=pc 一句話總結正向代理與反向代理的區別:正向代理是代理客戶端去訪問伺服器,它向伺服器隱藏了客戶端,伺服器並不知道真正訪問的客戶端是誰?反向代理是代理伺服器去

nginx實踐(五)之代理服務(正向代理反向代理介紹)

分享 dns解析 http 正向 gin .com 通過 自己 bubuko 正向代理 正向代理代理是為客戶端服務,代理負責DNS解析域名到對應ip,並進行訪問服務端,返回響應給客戶端 反向代理 客戶端自己負責請求DNS解析域名到對應ip,服務端通過代理分發流量,進行負載