Docker Nginx未正确代理Next.js

Docker Nginx未正确代理Next.js,docker,nginx,next.js,Docker,Nginx,Next.js,我已经在我的服务器上直接安装了nginx,其中包含一个包含Next.js应用程序的Docker容器的代理 正在正确加载Next.js的HTML,但所有资产均失败: server { listen 443 ssl http2; listen [::]:443 http2; server_name app.mydomain.ml; include extras.conf; ssl_certificate /etc/letsencrypt/live/app

我已经在我的服务器上直接安装了nginx,其中包含一个包含Next.js应用程序的Docker容器的代理

正在正确加载Next.js的HTML,但所有资产均失败:

server {
    listen 443 ssl http2;
    listen [::]:443 http2;

    server_name app.mydomain.ml;

    include extras.conf;

    ssl_certificate /etc/letsencrypt/live/app.mydomain.ml/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.mydomain.ml/privkey.pem;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_pass http://127.0.0.1:4000;
        proxy_redirect off;
        proxy_read_timeout 240s;
   }
}
看起来nginx试图打开JS文件,而不是将其传递给代理。这些文件在一个容器中。我有一个类似的设置,在另一个实例上运行良好

以下是nginx错误日志的一部分:

2020/06/24 19:39:50 [error] 11172#11172: *482 open() "/etc/nginx/html/_next/static/chunks/75fc9c18.5b5b04c7a1a3ce1f0adc.js" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: app.mydomain.ml, request: "GET /_next/static/chunks/75fc9c18.5b5b04c7a1a3ce1f0adc.js HTTP/2.0", host: "cfcdemo.ml", referrer: "https://app.mydomain.ml/"

2020/06/24 19:39:50 [error] 11172#11172: *482 open() "/etc/nginx/html/_next/static/chunks/22b3a38a.fdf56032c38364c88402.js" failed (2: No such file or directory), client: xxx.xxx.xxx.xx, server: app.mydomain.ml, request: "GET /_next/static/chunks/22b3a38a.fdf56032c38364c88402.js HTTP/2.0", host: "cfcdemo.ml", referrer: "https://app.mydomain.ml/"

为什么不为此创建一个别名

   location /_next {
                alias "/etc/nginx/html/_next/;
        }

删除了位置块中的所有垃圾,但代理通行证突然起作用

location / {
    proxy_pass http://127.0.0.1:4000;
}

因为我的Next.js应用程序在Docker容器中。将答案标记为有用。