2013-02-27 30 views
0

我有一個像這樣設置的反向代理。來自加載網站的反向代理請求未被代理

http://example.com/3rdpartywebsite/ - >http://internal.addr/3rdpartywebsite/

所以要example.com的請求反向代理到一個網站內部網絡上。

問題是,第三方網站是jquery,一旦它被加載到瀏覽器中,它就會向主機運行請求。這些請求(來自加載的應用)沒有被重定向到http://example.com/3rdpartyProxy/,而是將它們改爲http://example.com/

這似乎與標準getHttpObject()返回的內容有關。它不知道該URL的「3rdpartyProxy」的一部分,只是返回http://example.com/

這裏是我的反向代理配置的內容,從阿帕奇:

ProxyRequests Off 
ProxyPreserveHost On 
<Proxy *> 
     Order allow,deny 
     Allow from all 
</Proxy> 
ProxyPass /3rdpartywebsite/ http://internal.addr/ 
ProxyPassReverse /3rdpartywebsite/ http://internal.addr/ 

任何幫助,將不勝感激,我甚至不知道從哪裏開始尋找這裏。是否存在逆向代理的問題,還是應該查看網站本身的問題?

回答

0

我會回答我自己的問題!好極了。

我得到這個工作的方式到底是使用以下網站配置。我使用反向代理,然後進行重寫。在我的情況下,重寫很簡單,可以通過一次重寫cgi-bin調用來處理第三方服務。

第三方服務工作的正確方法是使用相對路徑,但因爲使用了絕對路徑,所以我被迫進入這個解決方案。

重要的是要注意,如果重寫引擎在反向代理之前生效,這將不起作用。你最終會得到一個死鏈接。

虛擬主機配置:

<VirtualHost *:80> 
    ServerAdmin  [email protected]<br> 
    ServerName  host.net 
    ServerAlias  www.host.net 
    DocumentRoot /var/www/ 
    DirectoryIndex index.php index.html 

    ProxyRequests Off 
    ProxyPreserveHost On 
    <Proxy *> 
      Order allow,deny 
      Allow from all 
    </Proxy> 
    ProxyPass /3rdPartyWebsite/ http://192.168.0.1/ 
    ProxyPassReverse /3rdPartyWebsite/ http://192.168.0.1/ 


    #RewriteLog /home/rfmondial/rewrite.log 
    #RewriteLogLevel 9 

    <FilesMatch \.php$> 
      SetHandler application/x-httpd-php 
    </FilesMatch> 

    <Directory /> 
      AllowOverride none 
      order deny,allow 
      allow from all 
    </Directory> 

    <Directory /var/www> 
      Options FollowSymLinks 
      allow from all 

      RewriteEngine On 
      #http://host/ --> http://domain/3rdPartyWebsite/ (default ROOT in Tomcat) a 
      RewriteCond !%{REQUEST_URI} !nt-gui/ 
      RewriteRule ^(cgi-bin.*)$ 3rdPartyWebsite/$1 [L] 
    </Directory> 
</VirtualHost>