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

Node.js+Express多页面部署Nginx后子页面404问题解决

问题解决:Nginx转发Express路由时404的修复

问题出在你的Nginx配置里的try_files指令上。

这条指令会让Nginx优先在本地/var/www/html目录下查找请求对应的文件或目录,找不到就直接返回404,根本不会把请求转发给后台的Express服务。所以访问/page2时,Nginx找不到本地的page2文件,直接返回404,没把请求传给Express处理。

修改方案

修改Nginx的location /块,移除try_files指令,确保所有请求都转发到Express服务。同时建议添加一些proxy通用配置,避免潜在的请求头传递问题:

server {
    listen 80;
    listen [::]:80;

    server_name _;

    # 若无需Nginx直接处理静态文件,可删除root和index配置
    # root /var/www/html;
    # index index.html;

    location / {
        proxy_pass http://localhost:5000;
        # 传递必要的请求头,让Express正确识别请求信息
        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;
    }
}

额外建议(静态资源处理)

如果后续需要让Nginx直接处理静态资源(如CSS、JS、图片),可以单独添加一个location块,让静态资源由Nginx直接返回,提升性能:

# 假设你的静态文件存放在 /home/pi/express-app/static 目录下
location /static/ {
    root /home/pi/express-app;
    expires 30d; # 设置缓存有效期,减少重复请求
}

此时Express中静态资源的路径就需要对应改成/static/xxx,Nginx会直接处理这类请求,其他请求仍转发给Express处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:20:27