我明白,要从端口80redirect到端口8080我可以使用Apache模块mod_proxy,
我明白,我必须改变“东西”是这样的(例如http://httpd.apache.org/docs/2.2/mod/mod_proxy.html ):
ProxyPass /foo http://foo.example.com/bar ProxyPassReverse /foo http://foo.example.com/bar
我不明白的是如何“编辑mod_proxy”。 我发现一个名为mod_proxy.so的文件,但它不是一个可以编辑的文本文件。
我需要做些什么才能做出这些改变,是我必须编辑的文本文件还是我必须运行的一些命令?
编辑:
基于这个问题如何使用mod_proxy让我的Apache的索引转到Tomcat ROOT,并能够浏览我的其他Apache网站
我编辑httpd.conf看起来像这样:
LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #Enabling proxy for redirection to tomcat #ProxyRequests Off #ProxyPreserverHost On <Proxy *> Order deny, allow Allow from all </Proxy> #ProxyPass / ajp://localhost:8009/ #ProxyPassReverse / ajp://localhost:8009/ <Location http://www.mywebserver.com> Order allow,deny Allow from all PassProxy / http://localhost:8080/ PassReverseProxy / http://localhost:8080 </Location>
然后我尝试重新启动apache与apachectl -k graceful但我得到:
Syntax error on line 207 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/httpd.conf: Cannot load /etc/apache2/modules/mod_proxy.so into server: /etc/apache2/modules/mod_proxy.so: cannot open shared object file: No such file or directory Action '-k graceful' failed.
任何信息,我做错了什么,或者我可以读取更多的信息,将不胜感激。
我通常做的是首先启用mod_proxy和mod_proxy_ajp 。 根据你的发行版你a2enmod mod_proxy_ajp ,它使他们都作为ajp取决于mod_proxy 。
然后我添加这样的东西:
<IfModule mod_proxy_ajp.c> <Location /tomcat-context> ProxyPass ajp://IP-or-FQDN/tomcat-context ProxyReversePass ajp://IP-or-FQDN/tomcat-context </Location> </IfModule>
这部分放在我的<VirtualHost>里面。 其余的是由OS设置的基本configuration(就像你的configuration显示, ProxyRequests Off等)
更新 :你需要改变,或者至lessvalidation你的tomcat server.xml。 它必须有这样的ajp容器启用:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
您可以禁用8080上的连接器,如果这是您从tomcat提供的所有服务,并且您不需要后端。 如果你没有访问到这个,或者ajp的端口被禁用了,那么基本可以达到同样的8080 。 只需在提供的configuration中使用http://replaceajp://标记,然后在IP或FQDN后添加:8080。
更新2服务/只写
<IfModule mod_proxy_ajp.c> <Location /> ProxyPass ajp://IP-or-FQDN/tomcat-context ProxyReversePass ajp://IP-or-FQDN/tomcat-context </Location> </IfModule>
确保在你的apacheconfiguration<Directory /path/to/old/documentroot/>注释掉DocumentRoot /path/to/old/documentroot/指令和<Directory /path/to/old/documentroot/> 。