我在虚拟机Linux-centos8系统里面安装了 nginx并启动,在虚拟机内部浏览器可以直接访问,但是从本地浏览器无法访问。
可以看到内置火狐浏览器是可以根据IP地址进行访问的。
这时我们想要通过外网去访问虚拟机内部的nginx系统有两个方法。
一、关闭防火墙
[root@localhost nginx]# firewall-cmd --state
running
我们使用firewall-cmd --state
查看一下防火墙状态是running
的
[root@localhost nginx]# systemctl stop firewalld.service
[root@localhost nginx]# firewall-cmd --state
not running
使用systemctl stop firewalld.service
命令关闭防火墙。
这时候在到外网访问一下虚拟机IP地址:
发现在google上可以访问了。
如果我不想关闭防火墙呢?还有什么办法能够解决呢?
二、防火墙开放80端口号
首先我们启动防火墙。
[root@localhost nginx]# systemctl start firewalld.service
[root@localhost nginx]# firewall-cmd --state
running
[root@localhost nginx]#
*重启防火墙:firewall-cmd --reload*
我们再次访问IP地址发现已经无法访问了,这时候我们开放一下80端口。
[root@localhost nginx]# firewall-cmd --reload
success
[root@localhost nginx]# firewall-cmd --list-ports
[root@localhost nginx]# firewall-cmd --permanent --add-port=80/tcp
success
[root@localhost nginx]# firewall-cmd --reload
success
[root@localhost nginx]# firewall-cmd --list-ports
80/tcp
开放80端口:
firewall-cmd --permanent --add-port=80/tcp
我们重新启动防火墙
firewall-cmd --reload
再一次使用外网访问看看:
完美!
补充一下centos8相关命令:
firewalld的基本使用
启动防火墙: systemctl start firewalld
关闭防火墙: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
查看开放的端口:firewall-cmd --list-ports
查看firewall状态:firewall-cmd --state
重启防火墙:firewall-cmd --reload
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
查询8080端口是否开放
firewall-cmd --query-port=8080/tcp
开放80端口
firewall-cmd --permanent --add-port=80/tcp
移除8080端口
firewall-cmd --permanent --remove-port=8080/tcp