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

Nginx无法代理本地localhost应用出现404及默认页问题求助

解决Nginx代理Prestashop容器的404与默认页面问题

问题根源分析

  1. 默认页面问题:你配置的location /未生效,是因为Ubuntu上Nginx默认的default.conf优先级更高,请求被导向了默认页面。
  2. /site/路径404问题:Prestashop的基础URL(Base URL)未匹配代理后的访问路径,导致内部生成的静态资源、路由地址错误;同时缺少必要的代理请求头,后端无法正确识别真实请求。

分步解决方案

1. 禁用Nginx默认配置

Ubuntu系统中Nginx默认配置会干扰自定义规则,先将其禁用:

mv /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak

2. 修正Nginx代理配置

创建或修改你的Nginx站点配置(比如/etc/nginx/sites-available/prestashop-proxy.conf),添加以下内容:

server {
    listen 80;
    server_name 192.168.238.171; # 匹配虚拟机的对外IP

    location /site/ {
        # 自动截断/site/前缀,将剩余路径转发到容器地址
        proxy_pass http://127.0.0.1:8080/;
        
        # 传递真实请求信息给后端,避免路径识别错误
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

将配置软链到启用目录:

ln -s /etc/nginx/sites-available/prestashop-proxy.conf /etc/nginx/sites-enabled/

3. 更新Prestashop基础URL

Prestashop依赖基础URL生成所有内部链接,必须修改为代理后的访问地址:

  • 后台修改(可直接访问容器时):登录http://127.0.0.1:8080后台,依次进入「首选项」→「商店参数」→「商店」,将商店URL改为http://192.168.238.171/site。
  • 配置文件修改(无法访问后台时):进入Prestashop容器,编辑config/settings.inc.php,修改以下两行:
define('_PS_BASE_URL_', 'http://192.168.238.171/site');
define('_PS_BASE_URL_SSL_', 'http://192.168.238.171/site'); # 无SSL时与上方一致

4. 验证配置并重启Nginx

检查配置语法是否正确:

nginx -t

确认无误后重启Nginx:

systemctl restart nginx

现在访问http://192.168.238.171/site即可正常访问Prestashop。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:42:55