nginx 找不到实际位于 docker 容器内的特定文件

问题描述 投票:0回答:1

我想反向代理托管在 Docker 容器内的站点。但 nginx 运行在 Linux VM 的容器之外。该站点运行在 docker IP http://172.17.0.3 和端口 3001。

所以我已经配置了我的 nginx 反向代理,如下所示

location /uptime {
proxy_pass http://172.17.0.3:3001;
proxy_read_timeout 1d;
}

但问题是,如果点击 HTTP://172.17.0.3:3001 URL,它总是重定向到 /dashboard 端点。因此更改了上面的配置,使其如下所示:

location /dashboard {
proxy_pass http://172.17.0.3:3001;
proxy_read_timeout 1d;
}

现在它可以工作了,但找不到一些特定的文件,例如manifest.json和一些实际位于容器内的资产文件。它只是抛出一些这样的错误

https://my_site_url/manifest.json 404 error not found

https://site_url/assets/index-ClrZ0SaR.css not found and so on.

我已经尝试了以下配置,但它不起作用

location /dashboard {
proxy_pass http://172.17.0.3:3001;
proxy_read_timeout 1d;
alias /app/dist/assets;
try_files $uri index.html;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript image/x-icon;

}

但是,还是没有成功。抱歉,我是 nginx 新手。可能正在做一些愚蠢的配置。

docker nginx nginx-reverse-proxy
1个回答
-1
投票

您似乎面临着在 Nginx 反向代理配置中提供静态文件和正确处理 URL 重定向的问题。

这是修改后的 Nginx 配置,可解决静态文件服务和 URL 重定向问题:

location /dashboard {
proxy_pass http://172.17.0.3:3001;
proxy_read_timeout 1d;
    
    # Handle static files
    location /dashboard/assets {
        alias /app/dist/assets;
        try_files $uri $uri/ =404;
    }
    
    # Handle URL redirects
    rewrite ^/dashboard/(.*)$ /$1 break;
}

确保将

/app/dist/assets
替换为 Docker 容器内包含静态文件的目录的实际路径。

更新 Nginx 配置后,不要忘记重新加载或重新启动 Nginx 以使更改生效:

sudo systemctl reload nginx
© www.soinside.com 2019 - 2024. All rights reserved.