在同一台服务器上运行 Tomcat 7 和 Apache 2

在同一台服务器上运行 Tomcat 7 和 Apache 2

我的网站有一部分需要通过 HTTPS 运行,我正在为该部分创建一个子域。我在同一台服务器上使用相同的 IP 运行 apache httpd 2 和 Tomcat 7,Apache 当然在端口 80 上,而 Tomcat 在端口 8080 上运行。现在,我正在为需要通过 tomcat 运行的请求进行域转发。例如,mathteamhosting.com/mathApp 可以转发到 mathteamhosting.com:8080/mathApp。

我想让 Tomcat 处理该子域的 https 请求。我认为这种转发技术在这种情况下不起作用。我该如何设置,以便 Tomcat 在端口 443 上接收请求,而 apache 处理端口 80。

更具体:
http://proctinator.com==> 请求发送到 Apache Web 服务器
https://private.proctinator.com==> 请求发送到 Apache Web 服务器

答案1

我想让 Tomcat 处理该子域的 https 请求。我认为这种转发技术在这种情况下不起作用。我该如何设置,以便 Tomcat 在端口 443 上接收请求,而 apache 处理端口 80。

实际上,您可以配置虚拟主机来转发所有类型的请求,包括 443。只需为同一台服务器设置两个虚拟主机,但按端口转发。端口 80 可以通过 ajp 或 http 代理转到您的 webhost,而 443 可以转到您的 tomcate。示例:

NameVirtualHost *:80
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName proctinator.com 

        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
ServerName private.proctinator.com

ProxyRequests off
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/

<Location />
    Order allow,deny
    Allow from all
</Location>
</VirtualHost>

您需要对配置设置进行一些修改,但这应该提供您描述的设置。

相关内容