是否可以仅为一个应用程序转发一个端口?

是否可以仅为一个应用程序转发一个端口?

我有一台 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 在此处提供了有关如何实现此目的的良好指南:

https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

相关内容