【发布时间】:2020-10-01 12:08:50
【问题描述】:
我有一个 Apache HTTP 服务器,它有一个 tomcat 服务器的反向代理。但是,我只希望在客户端使用子域 www 时发生反向代理。这是因为我想使用其他子域来指向其他应用程序,例如电子邮件。
例如www.example.com 将显示 apache tomcat webapp。
我认为这样做的方法是配置我的 DNS,以便我使用的每个子域都指向我的服务器。现在,除了 www,就是 server.example.com 和 posfixadmin.example.com。但是,问题是我所有的子域最终都指向 tomcat。
因此,当我尝试访问 postfixadmin.example.com/setup.php 以通过其 Web 设置设置 postfixadmin 时,它最终将我带到我的 tomcat webapp 的 404。
这是我的虚拟主机配置:
<VirtualHost www.example.com:80>
ServerName http://www.example.com
ProxyPass / http://localhost:8080
ProxyPassReverse / http://localhost:8080
</Virtualhost>
<VirtualHost server.example.com:80>
ServerName server.example.com
DocumentRoot /var/www/html/
RewriteEngine on
RewriteCond %{SERVER_NAME} =server.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} {END,NE,R=permanent}
</VirtualHost>
<VirtualHost postfixadmin.example.com:80>
ServerName postfixadmin.example.com
DocumentRoot /var/www/postfixadmin/public
ErrorLog /var/log/httpd/postfixadmin_error.log
CustomLog /var/log/httpd/postfixadmin_access.log combined
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/postfixadmin/public>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
编辑 看起来代理 conf 文件没有做任何事情(??)。我决定尝试一下并将第一个虚拟主机服务器名称更改为以下内容:
<VirtualHost *:80>
ServerName abcd.example.com
ProxyPass / http://localhost:8080
ProxyPassReverse / http://localhost:8080
</Virtualhost>
然后,我重新启动并重新加载了 Apache...但由于某种原因,访问 www.example.com 仍然将我带到了 tomcat webapp!有谁知道这是什么原因?
【问题讨论】:
标签: apache reverse-proxy virtualhost httpd.conf