将 HTTPS URL 重定向到在不同端口上运行的服务

将 HTTPS URL 重定向到在不同端口上运行的服务

我已经尝试了几个小时来弄清楚我的 SSL 配置。我正在运行 CentOS7。我已生成 SSL 证书并正常运行;我可以https://myip.com/test并通过 SSL 检索 html。

我有一个服务运行在单独的端口上(我们将其称为端口 12345,但如果需要可以更改),它运行自己的 http 服务器。我想通过 SSL 访问它。/etc/httpd/sites-available 中的 .conf 文件内容如下:

<VirtualHost *:443>
        ServerAdmin email@address
        ServerName server
        ServerAlias *:443
        ErrorLog /var/www/html/cam/error.log

        SSLEngine On
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key

        SSLProxyEngine On
        ProxyRequests On
        ProxyPreserveHost On
        ProxyVia full

        <proxy *>
                Order deny,allow
                Allow from all
        </proxy>

        ProxyPass / http://192.168.1.90:12345/
        ProxyPassReverse / http://192.168.1.90:12345/

</VirtualHost>

我的理解是,ProxyPass 和 ProxyPassReverse 应该将传入的 SSL 连接转发到在本地端口上运行的 http 服务器/服务。我理解的是否正确,只是在正确配置时遗漏了某些内容,或者这不是实现该目标的方法?

使用所示的配置,我收到 FORBIDDEN 错误,但如果我将 index.html 放在 /var/www/html/cam 内,那么它会通过 SSL https 显示。

谢谢你的帮助

答案1

经过一番尝试,我终于搞清楚了问题所在。首先,我需要在两个代理行中指定路径;它们需要更改为:

ProxyPass /cam/ http://192.168.1.90:12345/
ProxyPassReverse /cam/ http://192.168.1.90:12345/ 

此外,我最初只输入了“/cam”,但仍然出现错误。查看 /var/log/httpd/access_log,我看到它试图获取 /cam/——这让我认为代理规则不匹配。所以我添加了尾部斜杠,然后它开始工作了。现在,对 /cam/ 的 HTTPS 请求被重定向到在端口 12345 上运行的本地服务/服务器。

如果您不熟悉 SSL 设置(我今天才开始了解它),请为任何试图遵循并将其应用到他们的情况的人提供一份参考信息 - cam 目录的规范来自 /etc/httpd/conf/httpd.conf 中的设置,该设置位于“IncludeOptional sites-enabled/*.conf”行中,cam.conf 就放在这里。

我从这个链接开始:https://www.techrepublic.com/article/how-to-enable-https-on-apache-centos/- 一个非常好的关于如何初始设置 SSL 的指南。我写这篇文章的原因是,在完成所有这些操作后,我想将特定的 HTTPS 地址重定向到本地计算机上运行的非 https 服务器。

我想我已经介绍了解决此问题所做的一切——我试图尽快到这里,以免忘记任何细节!

相关内容