在我的设置中,Apache 充当反向代理。在端口 8081 上运行的应用程序服务器需要有效的Authorization
标头。标头由客户端应用程序设置。Apache 似乎删除了此标头。它无法到达端口 8081 上的服务器。
<VirtualHost mydomain.com:443>
ServerName mydomain.com
ServerAlias www.mydomain.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://mydomain.com:8081/
ProxyPassReverse / http://mydomain.com:8081/
</VirtualHost>
为了验证端口 8081 上的服务器是否正常工作,我添加了RequestHeader set Authorization "Basic XZY"
该配置。在这种情况下,端口 8081 上的服务器可以正确处理标头。
我还直接从客户端连接到端口 8081 上的服务器,以确保客户端确实设置了正确的标头。这也很好用。
答案1
代理链认证:
如果代理需要身份验证,它将读取并使用客户端发送的代理身份验证凭据。使用 proxy-chain-auth,它还会将凭据转发给链中的下一个代理。如果您有共享身份验证信息的代理链,这可能是必要的。安全警告:除非您知道需要它,否则请不要设置它,因为它会转发敏感信息!
这是你想要的?
答案2
最终发现原因在于客户端实现存在错误。