在 Ubuntu 服务器上打开端口 80

mar*_*tin 29 server iptables firewall networking ufw

我刚开始使用 Ubuntu/Linux,在为传入连接打开端口 80 时遇到了一些麻烦。

我运行了sudo ufw allow 80/tcp命令,当我运行时sudo ufw status,结果如下所示:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)

但是,在尝试使用 cURL 连接到端口时,我仍然收到此错误。

无法连接到 MY_IP_ADDRESS 端口 80:连接被拒绝

当我运行此命令netstat -ntlp | grep LISTEN以查看打开了哪些端口时,我得到以下结果:

(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN      -         
Run Code Online (Sandbox Code Playgroud)

这看起来不那么有希望..

如何为传入连接打开端口 80?

Flo*_*sch 17

没有程序在侦听端口 80,因此它已关闭,您无法连接到它。

您可以使用

sudo python -m SimpleHTTPServer 80
Run Code Online (Sandbox Code Playgroud)

启动一个简单的 web 服务器侦听端口 80,或者apache2如果你想要一个完整的 web 服务器,请安装类似 Apache (package ) 的东西。


xyz*_*xyz 12

UFW简单的防火墙。它管理可以打开计算机上的哪些端口以供应用程序侦听。sudo ufw allow 80/tcp表示允许TCP连接到端口 80

但是,端口后面实际上没有任何东西在侦听。到curl端口,应该有一个应用程序会发送一个回复。这通常称为服务器。作为@Florian指出,你可以使用Python中SimpleHTTPServer测试它。


小智 8

用:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

然后为了防止它在重启时丢失 iptables 配置,请使用:

sudo apt-get install iptables-persistent
Run Code Online (Sandbox Code Playgroud)

  • 这将是对 [答案](https://askubuntu.com/a/779745/283721) 2016 年 4 月的一个很好的编辑 (3认同)

aze*_*ati 6

对我有用的是使用 iptable

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不是永久性的。将在重新启动时重置。 (2认同)

Gal*_*en1 5

您可以sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT在配置端口时使用它接受端口,以防止丢失您可以使用的此终端代码行sudo apt-get install iptables-persistent 在命令开头使用 sudo 的原因是让它以超级用户身份运行 持久将其用作持久连接到所提供的端口。你也可以使用PythonSimpleHTTPServer来测试它!这是一个很好的问题!谢谢你!