您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

宿主机无法访问docker容器中nginx服务的问题解决

51自学网 2025-02-05 12:16:40
  网站维护

1.问题描述

在虚拟机中,部署好docker服务,并且安装了nginx。启动之后,宿主机无发访问容器中的nginx服务,一直转圈圈,但是虚拟机中使用 curl [虚拟机ip] 就可以访问到nginx的启动成功页面。

宿主机无法访问容器中的nginx

在这里插入图片描述

2.问题解决

2.1查看端口号是否映射正确

这里Nginx是主机80端口映射到docker中的80端口

在这里插入图片描述

2.2检查防火墙状态

[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)   Active: inactive (dead)     Docs: man:firewalld(1)

2.3需要进入docker下正在运行中的nginx容器内部启动nginx

[root@localhost ~]# docker exec -it nginx bashroot@6fe8ede3eab4:/# service nginx startroot@6fe8ede3eab4:/# service nginx statusnginx is running.

2.4访问成功

在这里插入图片描述

2.5如果还没有访问成功,有可能你在内核优化的时候 禁止ip转发功能了

  • Linux 默认情况下是不开启 ip 转发功能的,与docker无关。
  • 查看是否开启转发:执行以下命令,结果0为未开启,1为开启
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward 0
  • 配置linux内核允许转发
[root@localhost ~]# sysctl net.ipv4.conf.all.forwarding=1net.ipv4.conf.all.forwarding = 1

这个允许ip转发只是暂时的,重启虚拟机后会失效

永久修改方法

[root@localhost ~]# vim /etc/sysctl.conf找到 net.ipv4.conf.all.forwarding = 0  把0修改成1即可vim模式下 :/net.ipv4.ip_forward[root@localhost ~]# sysctl -p /etc/sysctl.conf-----[root@localhost ~]# systemctl restart network 

之后你会神奇的发现宿主机可以访问了!

在这里插入图片描述


下载地址:
Nginx设置HttpOnly Secure SameSite参数解决Cookie信息丢失
docker配置普通用户访问的三种方法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。