无法访问 Oracle Cloud Always Free Compute http 端口

问题描述 投票:0回答:6

昨天,我设置了我的第一个始终免费的计算 VM。我在我的虚拟机上安装了 ubuntu 18.04 minimal。为了我的网络服务需要,我安装了 Nginx。我很困惑,因为当我尝试通过网络浏览器访问我的公共 IP 时,Nginx 欢迎页面没有加载。我认为那是因为端口 80 没有打开。因此,我尝试通过在安全列表详细信息菜单中设置入口规则来打开它,如下图所示。 Ingress Rule for port 80

但是现在,我仍然无法访问我的虚拟机中的网络服务器。可能在 Oracle Cloud 中有更多有经验的人可以帮助我解决这个问题。谢谢

ubuntu nginx ubuntu-18.04 oracle-cloud-infrastructure
6个回答
136
投票

我在这上面浪费了很多时间。 我希望我先找到这个: https://docs.cloud.oracle.com/en-us/iaas/developer-tutorials/tutorials/apache-on-ubuntu/01oci-ubuntu-apache-summary.htm

  1. 为端口 80 配置入口路由

  2. 安装 ubuntu.

  3. 安装apache/nginx

  4. curl localhost
    应该以文本格式返回网页,但是在互联网上失败。

  5. 忘记 ufw 防火墙 - 这可能会导致 Oracle 防火墙出现问题

  6. 使用

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save
  1. 通过互联网测试您的网页

36
投票

这就是我在没有直接干预

iptables
的情况下做到的。

首先在Oracle Cloud vps的dashboard/Networking/Virtual Cloud Networks中创建一个

Ingress Rule
,例如端口范围为23-90

接下来,在ubuntu中安装

firewalld
firewalld
我觉得centos有)

sudo apt-get install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld

你只需要这样做一次。重启后它仍然存在。

然后,打开80端口:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent  #  or --add-service=http 
sudo firewall-cmd --reload

验证:

sudo firewall-cmd --list-all

输出:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports: 80/tcp
  ...

同样适用于打开其他端口。您可以轻松删除端口(

--remove-port=80/tcp
+
--reload
),请参阅
firewalld
文档。

从远程计算机进行测试

  1. 如果 Web 服务器尚未运行,请在 Oracle Cloud vps 的端口 80 运行它,例如:
    python3 -m http.server 80
    
  2. 在远程计算机中
    curl ip-of-oc-vps:80
    

我还在 Oracle Cloud Always Free vps 的防火墙上浪费了很多时间。我希望这可以节省其他人一些时间。


1
投票

如果您有互联网网关并且还配置了路由表,您可能仍需要检查操作系统级别的防火墙。如果未配置,您可能需要执行此命令:

sudo ufw allow http
有关更多详细信息,请参阅:How to Open/Allow incoming firewall port on Ubuntu


1
投票

就我而言——CentOS 8 Image,firewall-cmd 保存了规则,但端口不起作用。原因是系统使用了 iptables 而不是 nftables。所以,改变这个 /etc/firewalld/firewalld.conf 文件

# FirewallBackend=nftables
FirewallBackend=iptables

#firewall-cmd restart

成功了。


1
投票

你需要为你想要的端口允许防火墙

假设您希望实例上的 HTTP 和 HTTPS 端口启动,那么以下命令就足够了。

sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

然后在下次重启后保存 iptable 规则

sudo service iptables save

还要确保您保留了 Oracle 云控制台上端口的入口规则。


0
投票
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT

$ sudo netfilter-persistent save
© www.soinside.com 2019 - 2024. All rights reserved.