两个服务器使用mod_proxy,第二个服务器主机是本地IP并显示/ proxy / in url?

时间:2013-03-17 14:19:39

标签: apache reverse-proxy mod-proxy vhosts

我在家庭网络上运行的第二台服务器的会话方面遇到了一些问题。我这是一个爱好,并在正式上线之前开发新的应用程序。

我有一个指向我的ip的域并成功解析到服务器1,但在配置mod_proxy将特定域发送到服务器2后,我收到了一些不需要的错误和结果。我希望第二台服务器充当普通服务器,只需通过第一台服务器,因为我当前的路由器只能将端口80发送到一个本地IP而不过滤它。

我的第二台服务器有a.mydomain.com但它解析得很好但是当我尝试在第二台服务器上使用Web应用程序时出现以下错误

Warning: You are now accessing Mydomain from http://10.0.1.38/, but Mydomain has been configured to run at this address: http://a.mydomain.com/

我能解决这个问题吗?

此外,当尝试通过a.mydomain.com/phpmyadmin访问phpmyadmin时,它将在登录后更改为a.mydomain.com/proxy/phpmyadmin,我是否可以更改此设置以使其基本无缝且不添加/代理

这是我的服务器1的vhost配置

<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.server1domain.net
</VirtualHost>

<VirtualHost *:80>
ProxyPreserveHost On
ServerName a.mydomain.com
       <Proxy *>
        Order deny,allow
        Allow from all
       </Proxy>
ProxyPass / http://10.0.1.38/
ProxyPassReverse / http://10.0.1.38/
</VirtualHost> 

这是服务器2的vhost配置

<VirtualHost *:80>
    ServerAdmin admin@mydomain.com
    DocumentRoot /var/www/mydomaincom
    ServerName a.mydomain.com
</VirtualHost>

我正在运行Centos 6.4

1 个答案:

答案 0 :(得分:0)

好吧,我终于明白了这一点,现在有些东西显而易见,但这适用于处于类似情况的其他人。

早在我的http.conf中我有这个

<IfModule mod_proxy.c>
   ProxyRequests Off
   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

# destination directory

   ProxyPass /proxy http://10.0.1.38
   ProxyPassReverse /proxy http://10.0.1.38
</IfModule> 

这似乎有两个问题,似乎添加/ proxy /目录也是错误的,因为ip没有尾部斜杠,因此我将其改为此

<IfModule mod_proxy.c>
   ProxyRequests Off
   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>
</IfModule>

我的第一台服务器的http.conf vhost配置现在看起来像这样

<VirtualHost *:80>

ProxyPreserveHost On

ProxyPass / http://10.0.1.38/

ServerName a.mydomain.com
</VirtualHost> 

如果你在ip之后忘记了斜杠,你最有可能会遇到502错误:无法解决dns

第二台服务器vhost config看起来像这样

<VirtualHost *:80>
    ServerAdmin admin@mydomain.com
    DocumentRoot /var/www/mydomain
    ServerName a.mydomain.com
</VirtualHost>

希望能帮助其他有类似问题的人。