我需要你的帮助。
我在 Linux 机器上运行了 2 个版本的应用程序。版本 1 在 localhost 端口 5000 上运行,版本 2 在 localhost 端口 5001 上运行。
我需要用户能够根据他们使用的 URL 访问任一应用程序版本。
我现有的 Apache httpd.conf 如下:
当用户键入 http:/my.company.com 时,它会将他们重定向到 HTTPS 端口 443,端口 443 会重定向到 localhost 5000。这很有效。
<VirtualHost *:80>
ServerName my.company.com
Redirect / https://my.company.com/
</VirtualHost>
<VirtualHost *:443>
ServerName my.company.com/
TimeOut 600
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
SSLEngine on
SSLOptions +StrictRequire
SSLCertificateFile /etc/pki/tls/certs/my.company.crt
SSLCertificateKeyFile /etc/pki/tls/private/my.company.key
</VirtualHost>
现在我需要在用户键入http://my.company.com:15000时将其重定向到某个 HTTPS 端口,该端口重定向到我的应用程序正在侦听的 localhost 5001。
如果有其他方法可以做到这一点,比如使用不同的域名,比如 my-v2.company.com,它也可以。我可以创建一个新的 DNS 条目。这个想法是,当用户使用不同的端口或不同的域时,它应该将他们重定向到不同的应用程序端口。
我尝试在这里搜索并尝试了多种设置,但无法使其以这种方式工作。
您可以为同一个端口定义多个
VirtualHost
s,您只需为每个设置不同的 ServerName 指令。如果您希望 my.company.com 成为端口 5000 的应用程序,而 my-v2.company.com 成为端口 5001 的应用程序,我建议您使用如下配置:
这个答案的真正魔力在于前两行,它告诉 Apache 允许在同一端口上创建两个 VirtualHost,并通过已设置的 ServerName 来区分它们。