You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法配置Nginx反向代理:Docker环境下API域名映射失效求助

问题排查与解决方案

1. 检查端口占用状态

先确认服务器的80端口是否被Nginx正常监听,避免被其他进程抢占。执行以下命令:

sudo netstat -tulpn | grep :80

如果输出中没有nginx相关进程,说明80端口被其他程序占用,或者Nginx未正常启动。

2. 验证域名解析正确性

确保api.versite.online和versite.online已正确指向你的服务器公网IP。在本地终端执行:

nslookup api.versite.online
nslookup versite.online

若返回IP不是你的服务器地址,说明域名解析配置有误,需先修正DNS记录。

3. 开放防火墙/安全组80端口

服务器防火墙或云服务商安全组必须放行80端口,否则请求无法到达Nginx:

  • 若使用ufw防火墙:
sudo ufw allow 80/tcp
sudo ufw reload
  • 若使用firewalld防火墙:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

4. 补全前端站点的Nginx配置

你仅配置了API站点,还需添加前端站点versite.online的server块。假设前端项目文件存放在/var/www/versite-frontend,配置示例如下:

server {
    listen 80;
    server_name versite.online;

    access_log /var/log/nginx/versite.access.log;
    root /var/www/versite-frontend;
    index index.html index.htm;

    # 单页应用需添加此规则,避免页面刷新出现404
    location / {
        try_files $uri $uri/ /index.html;
    }
}

将上述内容保存到/etc/nginx/sites-available/versite.online,然后创建软链接到启用目录:

sudo ln -s /etc/nginx/sites-available/versite.online /etc/nginx/sites-enabled/

最后测试配置并重启Nginx:

sudo nginx -t
sudo systemctl reload nginx

5. 检查Docker容器网络配置

若Docker使用默认bridge模式,localhost:8080可访问容器,但如果是其他网络模式,需调整proxy_pass地址。先获取容器IP:

docker inspect <你的容器ID> | grep "IPAddress"

将API配置中的proxy_pass http://localhost:8080替换为http://<容器IP>:8080,再重启Nginx测试。

6. 查看Nginx错误日志

访问日志为空可能是请求未到达Nginx,或处理时出错。查看错误日志定位问题:

sudo tail -f /var/log/nginx/error.log

内容的提问来源于stack exchange,提问作者mlutsiuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:45:32