Mar*_*ing 21 apache tomcat mod-proxy ajp
有没有办法使用HTTP代理将Apache连接到Tomcat,以便Tomcat获取正确的传入主机名而不是localhost?我在apache中使用此指令:
ProxyPass /path http://localhost:8080/path
Run Code Online (Sandbox Code Playgroud)
但它来自localhost,当我们在同一台服务器上有一堆站点时,这是无用的.我可以在服务器配置中手动设置主机:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
proxyName="pretend.host" proxyPort="80" />
Run Code Online (Sandbox Code Playgroud)
但这再次不会提供多个站点.而且我不喜欢为每个站点使用不同的内部端口,听起来真的很难看.
我代理它时是否无法转移端口?
(如果你问为什么我不只是使用AJP,答案就是这个错误.我在尝试完全放弃Tomcat和Apache之前我正在尽我所能)
Rob*_*anu 40
您正在寻找的设置是:
<VirtualHost *:80>
ServerName public.server.name
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
请注意,我们使用localhost作为代理目标.我们可以这样做,因为我们启用了ProxyPreserveHost.文件说明了这一点
它主要用于特殊配置,如基于代理质量名称的虚拟主机,其中原始主机头需要由后端服务器进行评估.
这听起来和你正在做的完全一样.
我认为,如果您想在同一台服务器上使用多个站点,最好的办法是在Apache配置中使用虚拟主机.这是一个例子:
<VirtualHost *:80>
ServerName server.domain.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://server.domain.com:8080/
ProxyPassReverse / http://server.domain.com:8080/
<Location />
Order allow,deny
Allow from all
</Location>
Run Code Online (Sandbox Code Playgroud)
只要在外部DNS中注册了server.domain.com,传入的主机名就会显示在客户端URL中.我正在运行一个托管6个独立站点的服务器,其中包括3个由Tomcat使用此方法返回的站点.
| 归档时间: |
|
| 查看次数: |
55180 次 |
| 最近记录: |