重启AWS EC2实例后Nginx运行正常但React应用无法访问
排查EC2重启后Nginx运行但网站无法访问的问题
1. 确认EC2公网IP是否变更
AWS EC2默认用动态公网IP,停止再启动实例后公网IP会自动更换:
- 登录AWS控制台进入EC2实例详情页,复制当前的公网IPv4地址重新尝试访问。
- 要是需要固定IP,给实例分配**弹性公网IP(EIP)**并关联,避免重启后IP变动。
2. 检查Nginx实际运行状态与端口监听
虽然service nginx status显示已启动,但可能存在进程异常或端口未监听的情况:
- 执行
ps aux | grep nginx,确认Nginx主进程和worker进程都在运行。 - 执行
netstat -tulpn | grep nginx(或ss -tulpn | grep nginx),查看Nginx是否在监听80/443端口(取决于你的配置)。如果没有监听,说明Nginx配置有误或启动失败。
3. 验证Nginx配置文件正确性
重启实例后Nginx可能加载错误配置,导致无法正常服务:
- 执行
nginx -t检查配置文件语法,有错误会提示具体文件和行号。 - 确认Nginx配置中
root指向的静态文件目录(比如Vite构建后的dist目录)存在,且文件权限正确。示例配置检查:server { listen 80; server_name _; # 匹配任意域名或IP root /path/to/your/react/app/dist; index index.html; location / { try_files $uri $uri/ /index.html; # 适配React路由 } } - 配置修改后执行
service nginx reload或systemctl reload nginx重新加载配置。
4. 检查安全组与网络ACL规则
重启实例后安全组可能未正确关联或规则被修改:
- 确认EC2实例关联的安全组已开放入站端口80(HTTP)(用HTTPS则开放443),源地址设为
0.0.0.0/0或你需要的访问范围。 - 检查VPC的网络ACL,确保入站规则允许80/443端口流量,出站规则允许必要的响应流量。
5. 查看Nginx日志定位问题
日志能直接反映Nginx运行错误:
- 查看访问日志:
tail -f /var/log/nginx/access.log,确认是否有请求记录。 - 查看错误日志:
tail -f /var/log/nginx/error.log,文件权限不足、配置错误或端口占用等问题都会在这里有详细提示。
6. 设置Nginx开机自启
避免下次重启后Nginx无法自动启动:
- 执行
systemctl enable nginx(适用于systemd系统),配置Nginx开机自动启动。 - 若用
service命令,可通过chkconfig nginx on设置开机自启(取决于系统版本)。
内容的提问来源于stack exchange,提问作者sourabh singh
相关产品推荐
相关产品推荐

