我正在尝试设置 ProxyPass 和 ProxyReverse,以便可以在两个不同的服务器之间共享一个域。
希望实现:
服务器 A:https://example.com/quotes
服务器B:https://testing.com/quotes
当我在中设置代理时VirtualHost
,它给出了 500 内部服务器错误。
站点启用示例:
<VirtualHost _default_:443>
Protocols h2 h2c http/1.1
SSLEngine on
SSLProtocol +TLSv1.1 +TLSv1.2
SSLCertificateFile ../../certificate.crt
SSLCertificateKeyFile ../../certificate.key
SSLCACertificateFile ../../certificate.ca-bundle
ProxyRequests Off
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<Proxy *>
Require all granted
</Proxy>
ProxyPass /quotes https://testing.com/quotes
ProxyPassReverse /quotes https://testing.com/quotes
ErrorLog syslog
LogLevel emerg
</VirtualHost>
我是否遗漏了什么?
答案1
如果您检查 vh 错误日志,它会告诉您它无法识别 url 方案。这是因为您没有为代理连接指定 SSL 引擎。
无论何时代理到 https,都需要这个:
SSLProxyEngine on
ProxyPass /quotes https://testing.com/quotes
ProxyPassReverse /quotes https://testing.com/quotes
补充说明一下,您不需要:
<Proxy *> Require all granted </Proxy>
认为这些与正向代理比与反向代理更相关。