我知道要从端口 80 重定向到端口 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.
如果您能提供任何有关我做错什么或我可以阅读什么来获取更多信息的信息,我将非常感激。
答案1
我通常首先启用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>
。其余的是操作系统设置的基本配置(就像您的配置所示,等等ProxyRequests Off
)。
更新:您需要更改或至少验证的是您的 tomcat server.xml。它必须启用 ajp-container,如下所示:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
如果您从 tomcat 提供的全部服务都是 8080,并且您不需要后端,则可以禁用 8080 上的连接器。如果您无权访问它,或者 ajp 的端口被禁用,您基本上可以实现相同的效果8080
。只需将提供的配置中的 ajp:// 标记替换为 http://,并在 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>
确保你在 apache 配置中注释掉该DocumentRoot /path/to/old/documentroot/
指令和。<Directory /path/to/old/documentroot/>