传输无法在端口 80 上进行

传输无法在端口 80 上进行

我尝试使用 Transmission 的 Web 界面,它运行完美。我可以通过 访问它http://localhost:8080/transmission/web/,我可以使用我的本地 IP,我可以使用 127.0.0.1,在端口转发后,我甚至可以使用我的实际 IP。DNS 连接甚至成功了!

我对附加在 URL 上的链接感到厌烦:8080,想删除它,所以我进入 Transmission 的设置并将其更改为端口 80。突然间,我无法通过任何方法!但都失败了。即使按下 Transmission 设置中的“打开 Web 客户端”按钮也不起作用。(如果您好奇的话,这只是一个通用的“无法建立连接”消息。)
注意:我没有安装 Apache 或任何其他服务器软件。

然后,我惊慌失措地切换回端口 8080,一切正常。再次尝试 80,失败。重新启动 Transmission 也没有解决任何问题。(出于直觉,我尝试:8080在将 URL 设置为端口 80 时连接到该 URL,只是为了看看它是否仍在使用旧端口。结果不是。)

无论如何,这不是一个关键问题,但我真的很想能够为我的网络客户端使用端口 80!(好吧,我会实际上喜欢能够使用 443,但那是另一个问题...)

答案1

前 1024 个端口受到限制;您需要是 root 用户或具有适当的CAP_NET_BIND_SERVICE能力。

如果您确实想使用端口 80,您可以使用该setcap命令为传输提供该功能。

这是正确的 Transmission 命令:

sudo setcap cap_net_bind_service+ep /usr/bin/transmission-daemon

答案2

另一种方法是,如果您不想为传输提供额外的权限,并且碰巧已经安装了 Apache 或 nginx,那么可以使用 Apache 或 nginx 代理从端口 80 到端口 8080 的转发连接。

参见这种方法:

https://serverfault.com/questions/141904/forwarding-apache-requests-port-80-to-tomcat-port-8080

总之,它涉及使用 mod_proxy 安装 Apache,然后:

ProxyPass        / http://hostname:8080/
ProxyPassReverse / http://hostname:8080/

如果您还想在端口 80 上运行其他程序,您甚至可以根据需要更改路径名。

nginx 中的等效操作也很简单。

相关内容