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

添加try_files指令后Nginx仅在React静态构建JS文件中返回HTML代码的问题排查求助

添加try_files指令后Nginx仅在React静态构建JS文件中返回HTML代码的问题排查求助

大家好,我现在遇到一个Nginx配置的问题,想请各位帮忙排查一下。

我用多阶段构建的Dockerfile打包了一个React应用镜像,Dockerfile内容如下:

FROM node:13.12.0-alpine as build

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

COPY package.json ./

COPY package-lock.json ./

RUN npm config set @bit:registry https://node.bit.dev

RUN npm install --silent

RUN npm install react-scripts@3.4.1 -g --silent

COPY . ./

RUN npm run build

FROM nginx

COPY --from=build /app/build /usr/share/nginx/html

构建完成后,我把这个React容器运行在3000端口上。同时我还跑了另一个Nginx容器,用来做SSL反向代理和HTTP转HTTPS的重定向,它的配置文件是这样的:

server {
    listen 80 default_server;
    listen [::]:80;
    server_name _;
    server_tokens off;
    return 301 https://$host$request_uri;
}

server {
    listen 443 default_server ssl http2;
    listen [::]:443 ssl http2;
    server_name domain.com;

    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
        proxy_pass http://xxx.xxx.xxx.xx:3000;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

现在访问我的域名时,HTTP转HTTPS的重定向是正常的,但Nginx似乎没法正确提供静态文件——我发现React构建出来的主JS静态文件里返回的居然是HTML代码。

我自己做了一些排查:如果把location /里的try_files这行注释掉,首页就能正常显示;另外如果直接开放防火墙的3000端口,不用这个Nginx代理,直接访问React容器的话,首页也能正常展示。

有没有人能帮我梳理一下这个配置的问题出在哪?谢谢大家!

备注:内容来源于stack exchange,提问作者tritomit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:47:30