我的网站有一部分需要通过 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>
您需要对配置设置进行一些修改,但这应该提供您描述的设置。