我已经成功地利用了
http.ListenAndServe(":80", mux)
在Go中托管我的web服务。不过,它似乎只适用于本地主机。
http.ListenAndServe("192.168.1.83:80", mux)
这适用于此地址上的特定连接,但是否有一种方法可以使其对服务器上的任何ip地址起作用?
编辑:
我使用不同的端口(在本例中为8080)检查它,然后使用":8080“作为文档。即使在同一台机器上进行测试,端口80似乎也有一些特殊之处,这意味着它实际上只在本地主机上侦听。
为了避免疑问,我使用的是Windows,所有测试都是在同一台物理机器上完成的。我还检查了使用管理权限运行,这并没有什么不同。
发布于 2016-10-15 19:20:07
http.ListenAndServe(":80", mux)
是正确的地址。net/http
使用net
包。引用net.Listen()
如果省略了主机(如":8080“中的内容),则侦听所有可用接口,而不是只侦听具有给定主机地址的接口。有关地址语法的详细信息,请参阅拨号。
要知道端口80是受限制的,或者在许多系统上可能被防火墙阻塞。在unix系统上,低于1024的端口通常需要特殊的权限。例如,测试8080端口,因为这样做并不特殊。
发布于 2016-10-15 20:46:55
不,http.ListenAndServe适用于任何主机或端口,但是低于1024的端口需要根权限。您可以以普通用户的身份重定向端口80上的连接,方法是:
sudo apt-get install iptables-persistent
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo netfilter-persistent save
sudo netfilter-persistent reload
https://stackoverflow.com/questions/40063120
复制相似问题