0

我有一个像这样设置的反向代理。

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

因此,对 example.com 的请求被反向代理到内部网络上的网站。

问题是 3rdparty 网站是 jquery,一旦加载到浏览器中,它就会向主机运行请求。这些请求(来自加载的应用程序)没有被重定向到http://example.com/3rdpartyProxy/他们而是去http://example.com/

这似乎与标准 getHttpObject() 返回的内容有关。它不知道 url 的“3rdpartyProxy”部分,只返回http://example.com/

以下是我的 apache 反向代理配置的内容:

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

任何帮助将不胜感激,我什至不确定从哪里开始寻找这里。是反向代理的问题,还是我应该查看网站本身的问题?

4

1 回答 1

0

我会回答我自己的问题!耶。

我最终得到这个工作的方式是使用以下站点配置。我使用反向代理,然后重写。在我的例子中,重写很简单,只需重写一次对 3rd 方服务的 cgi-bin 调用即可处理。

3rd 方服务工作的正确方式是使用相对路径,但由于使用了绝对路径,我被迫采用此解决方案。

需要注意的是,如果重写引擎在反向代理之前生效,这将不起作用。你最终会得到一个死链接。

虚拟主机配置:

<VirtualHost *:80>
    ServerAdmin     webmaster@host.net<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>
于 2013-02-28T12:41:32.200 回答