我尝试使用 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 中的等效操作也很简单。