mod代理不工作在Apache

我试图在WHM / CPanel CeEntOS Linux服务器上安装Mod_Proxy Apache模块。 这里是系统信息:

CentOS release 5.6 (Final) Server version: Apache/2.2.21 (Unix) Cpanel::Easy::Apache v3.7.2 rev9999 

我安装的目的是这样的,当在网站abc.com上时,当我点击链接到网站auto.efg.com(假设它的IP地址是192.168.0.101)时,浏览器将在auto.efg上加载应用程序。同时在浏览器地址栏上维护abc.com。

所以我遵循这个教程:

Install Mod_Proxy Apache module on WHM/CPanel CeEntOS Linux Server Without Recompiling Apache

所以当我完成后,我能够做到这一点:

 root@ip-xxx-xxx-xxx [/tmp/httpd-2.2.21/modules/proxy]# ls -l /usr/local/apache/modules/mod_proxy* -rwxr-xr-x 1 root root 88708 Jan 5 08:22 /usr/local/apache/modules/mod_proxy.so* -rwxr-xr-x 1 root root 49654 Jan 5 08:23 /usr/local/apache/modules/mod_proxy_connect.so* -rwxr-xr-x 1 root root 73196 Jan 5 08:23 /usr/local/apache/modules/mod_proxy_http.so* 

现在,我按照这些说明,并尝试重新启动服务器后,我得到了以下错误:

 /etc/init.d/httpd restart httpd: Syntax error on line 35 of /usr/local/apache/conf/httpd.conf: module proxy_module is built-in and can't be loaded 

你看,这发生,因为我已经加载模块proxy_module ,. httpd.conf中的proxy_http_module,所以我在/usr/local/apache/conf/httpd.conf中注释掉它们:

 # LoadModule proxy_module modules/mod_proxy.so # LoadModule proxy_http_module modules/mod_proxy_http.so # LoadModule proxy_connect_module modules/mod_proxy_connect.so 

现在,错误消失了。

而我的虚拟主机设置如下所示:

 <VirtualHost 50.63.53.79:80> ServerName abc.com ServerAlias www.abc.com DocumentRoot /home/eagl0028/public_html ServerAdmin [email protected] ## User eagl0028 # Needed for Cpanel::ApacheConf <IfModule mod_suphp.c> suPHP_UserGroup eagl0028 eagl0028 </IfModule> <IfModule !mod_disable_suexec.c> SuexecUserGroup eagl0028 eagl0028 </IfModule> ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPreserveHost On ProxyPass / http://192.168.0.101/ ProxyPassReverse / http://192.168.0.101/ CustomLog /usr/local/apache/domlogs/abc.com-bytes_log "%{%s}t %I .\n%{%s}t %O ." CustomLog /usr/local/apache/domlogs/abc.com combined ScriptAlias /cgi-bin/ /home/eagl0028/public_html/cgi-bin/ </VirtualHost> 

但是,当我运行:

  service httpd stop service httpd start 

然后发布到相对的url:

 <form accept-charset="UTF-8" action="/users/sign_in" class="user_new" id="user_new" method="post"> 

林期待它发布到192.168.0.101,但它没有。 我检查了192.168.0.101服务器日志,并没有进入请求的迹象。所有发生的404错误,找不到的url在上面是abc.com/users/sign_in

您的VirtualHost有一个IP地址+端口对50.63.53.79:80。 这可能听起来很明显,但如果服务器有多个IP地址或端口正在监听,请确保您的浏览器实际上正在访问该IP地址和端口。 如果POST命中端口443或类似的,这个虚拟主机将不会被使用。 这可以解释为什么没有在日志中显示。 检查主服务器日志,看看你的请求是否在那里。 如果你正在从本地networking运行你的testing,并且打到本地networkingIP地址,那肯定会这样做。

如果您在包含文件中没有实际使用此configuration,则可能会触发类似的行为。

在这两种情况下,使用-S参数手动运行httpd二进制文件(确保包含当前正在运行的apache进程中在进程表中看到的所有必要参数)将显示所有已定义的虚拟主机并帮助您找出丢失的地址,或者可能捕获stream量的其他地址+端口对。

您可以将虚拟主机configuration为使用*代替IP地址来监听所有IP地址。

 <VirtualHost *:80> 

您也可以显式configuration多个IP地址

 <VirtualHost 50.63.53.79:80 192.168.0.101:80> 

http://auto.efg.com/users/sign_in/href将浏览器从代理发送出去 – 这不是Apache的工作,以确保页面上的每个链接都能让浏览器与代理进行通话。 (有一些第三方模块可以改变传输页面上的URL,但是除了平面HTML中的链接之外,它们不会起作用)

你可以改变链接离开计划和主机完好?

 <a href="/users/sign_in/">clicky</a>