特定子域的Apache反向代理

问题描述 投票:0回答:1

我有一个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:8080>
    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>

apache reverse-proxy virtualhost httpd.conf
1个回答
0
投票

关于DNS:我为每个子域(包括www;它们全部都指向example.com域(在我的情况下使用@)。

我相信不需要在http指令中指定ServerName协议,并且通常,该域不需要出现在<VirtualHost> ...''`标签内。

我应该提一下,我相对不熟悉Tomcat,但是假设它正在本地主机上的8080侦听,在这种情况下,这应该会有所帮助。

[我不确定100%就是说,这就是在困扰您,但是请尝试修剪ServerName并这样做,包括更改VirtualHost打开标记:

<VirtualHost *:80>
    ServerName www.example.com
    ProxyPass / http://localhost:8080
    ProxyPassReverse / http://localhost:8080
</Virtualhost>

您的第二个<VirtualHost>可能需要进行类似的更改,尽管似乎您也正在将其定向为满足来自Web /网络的请求端口8080上传入的-我不这样做相信你的意图。

我认为您想要的是:

<VirtualHost *: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>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.