我有一个 Apache 和 Glassfish 设置,旨在将所有流量重定向到服务器或其别名到 glassfish 端口。这工作得很好,但是我们需要向服务器添加更多服务,因此我们不能只强制所有流量通过一个端口。
我希望的是,如果用户使用服务器的标准名称,它将保留在 apache 中,但如果他们使用服务器的别名,则所有流量都会路由到 glassfish 端口。这怎么可能呢?
这是当前配置
ServerName [name]
ServerAlias [alias]
SSLProxyEngine on
ProxyPreserveHost on
ProxyRequests on
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?[name] [NC]
RewriteRule (.*) https://[name]/$1 [L,R=301]
#RewriteCond %{HTTPS} off
#ProxyPass / https://[alias]:443/
#ProxyPassReverse / https://[alias]:443/
#Redirect / https://[alias]:443/
最初注释的行被取消注释,这迫使所有流量都转到 443,然后进入 glassfish 端口。这些行被禁用,以允许标准 http 流量按预期工作
答案1
尝试重写 [P] 标志。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?[alias] [NC]
RewriteRule ^/(.*)$ https://[alias]:443/$1 [P]
ProxyPassReverse / https://[alias]:443/