我有一个使用Express.js的Node.js应用程序,该应用程序在端口1399上运行,为用户提供了其他API。可以使用http://example.com:1399访问该API。我正在使用“让我们加密SSL”。
问题在于,只有没有SSL 的请求才能正常工作,因为“加密”仅允许默认端口(例如端口443)上的HTTPS。使用https://example.com:1399/(带有https)会给我一个在Firefox上的安全连接失败错误。
为了能够在端口443以外的其他端口上也提供SSL,我希望将所有请求从https://example.com/api路由到https://example.com:1399/api。您如何使用Apache和反向代理来做到这一点?
我通过在/etc/apache2/sites-available/000-default-le-ssl.conf中添加以下内容,尝试了this答案中建议的解决方案:
<Virtual Host *:443>
...
ProxyPass /api/ https://127.0.0.1:1399/api/
ProxyPassReverse /api/ https://127.0.0.1:1399/api/
</VirtualHost>
但是,当调用https://example.com/api/时,它会给我一个内部服务器错误。用http://调用它没有任何反应,并且会在10秒后使“加载”标签超时。
答案 0 :(得分:0)
/etc/apache2/sites-available/000-default-le-ssl.conf
之前将这两行添加到 </VirtualHost>
:ProxyPass "/api" "http://example.com:1399/"
ProxyPassReverse "/api" "http://example.com:1399/"
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo /etc/init.d/apache2 restart