使用 ipv6 将端口 80 连接重定向到端口 8080 的最佳方法是什么?

使用 ipv6 将端口 80 连接重定向到端口 8080 的最佳方法是什么?

据我了解,IPV6 应该可以消除整个端口转发要求。但是,如果我想在端口 80 上托管一个 Web 服务器,其中包含 python 或 javascript 之类的程序,我仍然需要使用 sudo,这是一种不好的做法。

因此,作为一种解决方法,我尝试使用 nginx 将端口 80 请求重定向到端口 8080,这样我就可以在端口 8080 上托管 Web 服务器,而无需 sudo,并且用户无需访问特定端口即可看到它。但是,当我这样做时,我不断收到来自 nginx 的错误网关错误,我不确定我做错了什么。

我对这一切还很陌生,因此我很感激任何指导。

这是我的 nginx 配置文件,它非常简单,但我希望它能够解决问题:

server {
    listen [::]:80;
    server_name domainname.com;

    location / {
            proxy_set_header        X-Forwarded-For $remote_addr;
            proxy_set_header        Host $http_host;
            proxy_pass              http://[ipv6:ipv6:ip:ipv6:ipv6:ipv6:ipv6:ipv6]:8080;
    }

}

答案1

在 Server Fault 的其他地方(以及其他 Stack Exchange 网站),您可以找到有关低编号非特权端口选项的更完整的答案。

对于 Linux,我更喜欢授权绑定,这是一个黑客攻击,其中 setuid 特权助手执行此特定端口操作。然后将 authbind 程序放在 Web 服务器软件前面,在服务管理器中启动的命令中。

另一个有不同优缺点的选择是 LinuxCAP_NET_BIND_SERVICE


更高的精度可能有助于您理解 IP 网络和用户安全。

IPv6 消除了 IP 地址稀缺问题。您无需担心任何其他主机需要端口 443。网络防火墙上的端口共享已不复存在。

但是您仍然需要处理特权端口。这是一个传统概念,用于防止任何随机用户在该知名端口上启动 ssh 服务器。但是,最小特权更好,您应该管理此用户,所以没问题。

对于用户来说,sudo 并不坏,只是有点复杂。切换用户程序的存在是为了允许人们在特定情况下跨越基于用户的权限隔离。问题是,人们倾向于编写的策略赋予了太多的权限。以 root 身份运行任何命令都比以 root 身份运行 Web 服务器要强大得多,该用户拥有您的服务器。即使您正确地限制了命令,如果用户可以用恶意程序替换该程序,他们现在就可以以 root 身份做任何事情。相比之下,我的建议是通过垫片或功能仅允许端口操作。

答案2

这主要是评论....

无需 sudo

...不是设计基础设施的良好基础。特权端口之所以如此,是有原因的。您在此处提出的建议确实破坏了安全分层的良好实践。主机最暴露的部分应该使用最强大的软件。如果原始服务器是 nginx、lighttpd、apache 或 IIS,那么这可能不是问题。“像 python 或 javascript 这样的语言”一个不应该被揭露的问题。

我一直收到来自 nginx 的坏网关错误

也许您不应该在这里开始解决这个问题,而应该发布一个新问题,询问如何诊断和解决此问题。您应该包括从运行 nginx 的主机测试到原始服务器的 http 请求时发生的情况的详细信息。

相关内容