我有一台 Ubuntu 服务器 (18.04),它在 Apache2 上托管一些网站,并且还运行着一个节点应用程序。我希望节点应用程序使用 SSL,但由于它不是以 root 身份运行,因此它无权监听 1024 以下的端口。
因此我设置了如下 iptables 规则,并监听端口 8443:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443
这适用于节点,但现在由于证书不匹配(Error code: SSL_ERROR_BAD_CERT_DOMAIN
在 Firefox 中),所有网站都崩溃了。我推测这是由于 HTTPS Web 请求也被转发到同一端口。
有没有办法只检测并转发节点请求,而不影响 Apache?或者其他解决方案。
答案1
为了形成这个答案,我假设当您说您在该服务器上托管其他 apache 站点时,它们也将使用 HTTPS。 因此,将端口 443 路由到节点服务将在任何情况下破坏 apache2 中的 SSL 站点……除非您使用代理。
您最好运行新的 Apache VHost,并使用 ProxyPass,并确保将代理传递指向本地主机,但在末尾带有重要的端口号,例如 https://localhost:8443。
与往常一样,DigitalOcean 在此处提供了有关如何实现此目的的良好指南: