我目前正在尝试使用 Apache 设置反向代理。我采用了以下配置:
<VirtualHost *:80>
ServerName my-server
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost on
ProxyRequests off
ProxyPass "/c/" "https://other.server.com/"
ProxyPassReverse "/c/" "https://other.server.com/"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我遇到的问题是,当我导航到localhost:8080/c/slug/
它时,它按预期工作,但是当我导航到localhost:8080/c/slug
它时,它会重定向到,localhost:8080/slug
而不是从代理服务器获取内容。
检查呼叫标头时,我发现了301: Moved permanently
。
另一方面,在检查有效的调用时,一切看起来都很好:
我尝试过以下想法,但都没有奏效:
重写规则
添加重写规则:
RewriteEngine on
RewriteRule "slug$" "slug/" [L,R=301]
明确输入 URL
明确输入我想要访问的 URL(不带正斜杠):
ProxyPass "/c/slug" "https://other.server.com/"
ProxyPassReverse "/c/slug" "https://other.server.com/"
我也尝试过打开和关闭ProxyRequests
,但是也没有用。
任何帮助都将受到赞赏。
答案1
我遇到了类似的问题,但在我的例子中,我将 VirtualHost 从 HTTP 重定向到使用 HTTPS 的 VirtualHost,并且在我的 Redirect 指令中缺少最后的/。
例如:重定向 /https://本地主机
我解决了:重定向/https://本地主机/