VirtualBox运行Fedora35 同局域网设备无法访问Nginx初始页求助
Nginx局域网访问超时排查解决指引
按问题出现概率从高到低依次排查:
- 检查VirtualBox网卡配置
这是虚拟机场景下的最高发原因:VirtualBox默认的NAT网络模式仅会做虚拟机对外访问的地址转换,局域网内其他设备无法直接寻址访问虚拟机内部服务。你可以把虚拟机网卡调整为桥接网卡模式,选中当前宿主机接入局域网对应的物理网卡,保存设置后重启虚拟机网络或直接重启虚拟机,确认虚拟机拿到和局域网同网段的独立IP后再尝试访问。
如果你不想切换桥接模式,也可以在NAT模式的高级设置里配置端口转发规则,将宿主机的80端口映射到虚拟机的80端口,后续通过宿主机IP访问即可。 - 检查Fedora防火墙规则
Fedora 35默认启用firewalld服务,默认不会放行HTTP/HTTPS服务的入站流量,执行以下命令放通对应规则并重载生效:
执行完成后可以运行sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reloadsudo firewall-cmd --list-all,确认public区域的允许服务列表中已经包含http、https项。 - 核对Nginx监听配置
检查/etc/nginx/nginx.conf以及conf.d目录下的站点配置,确认server块的监听规则没有绑定仅本地回环地址:正确的配置应为listen 80;或listen 0.0.0.0:80;,如果配置为listen 127.0.0.1:80;则仅支持本机访问。
修改配置后先执行sudo nginx -t校验配置语法无报错,再执行sudo systemctl reload nginx重载配置生效。 - 排查SELinux拦截
Fedora默认开启SELinux强制模式,可能会拦截Nginx的外部网络访问。可以先执行sudo setenforce 0临时切换SELinux为宽容模式测试,如果此时可以正常访问,执行以下命令永久放通对应权限即可:
测试完成后记得执行sudo setsebool -P httpd_can_network_connect 1sudo setenforce 1重新开启SELinux强制模式,不建议长期关闭SELinux。 - 校验端口监听状态
执行以下命令确认Nginx的实际监听状态:
正常返回结果中,nginx进程需要在sudo ss -tulnp | grep nginx0.0.0.0:80或:::80地址上监听,如果仅显示监听127.0.0.1:80,回到Nginx配置步骤修正监听规则即可。
内容的提问来源于stack exchange,提问作者Angel Sanchez
相关产品推荐
相关产品推荐

