gpt4 book ai didi

angular - `try_files`无法与Nginx Docker镜像一起使用

转载 作者:行者123 更新时间:2023-12-02 18:19:25 28 4
gpt4 key购买 nike

我有一个简单的Angular单页应用程序,试图与Nginx docker镜像1.17.1版一起使用。

Dockerfile中,我构建并打包Angular,然后将生成的文件复制到nginx图像。

FROM node:12.6.0 AS package-stage
WORKDIR /app
COPY ./angular/package.json ./angular/package-lock.json ./
RUN npm install
COPY ./angular/. ./
RUN npm run ng build -- --configuration=production

FROM nginx:1.17.1
COPY --from=package-stage /app/dist/* /usr/share/nginx/html/
COPY ./nginx/. /

最后的 COPY步骤将我的nginx配置复制到镜像中。目前,这只是 /etc/conf.d/default.conf。我仅更改了此文件中的1行,如下所示:
server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html; <-- Added by me
}

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

}

可以在 index.html上访问页面 http://localhost,但是添加任何其他url参数(例如 http://localhost/dashboard),会使我进入Nginx 404错误页面。

有关信息,这是Docker容器内 /usr/share/nginx/html的内容:
# cd /usr/share/nginx/html
# ls -l
total 1616
-rw-r--r-- 1 root root 27338 Jul 28 17:13 3rdpartylicenses.txt
-rw-r--r-- 1 root root 494 Jun 25 12:19 50x.html
-rw-r--r-- 1 root root 15406 Jul 28 17:12 favicon.ico
-rw-r--r-- 1 root root 1027 Jul 28 17:13 index.html
-rw-r--r-- 1 root root 637237 Jul 28 17:12 main-es2015.22ca1a6907ac396057b0.js
-rw-r--r-- 1 root root 727972 Jul 28 17:13 main-es5.26d2792d89e453a5208c.js
-rw-r--r-- 1 root root 37298 Jul 28 17:12 polyfills-es2015.9a05c5eeb2c24cb2663d.js
-rw-r--r-- 1 root root 115451 Jul 28 17:13 polyfills-es5.fdab6b769da451ba6a00.js
-rw-r--r-- 1 root root 1440 Jul 28 17:12 runtime-es2015.d5623f03f1e64ac8e12f.js
-rw-r--r-- 1 root root 1440 Jul 28 17:13 runtime-es5.a8c9c2928baa49aa82ad.js
-rw-r--r-- 1 root root 64080 Jul 28 17:12 styles.56c73d0b9f8117f2238e.css

我确保每次都要刷新页面,因为我知道有时浏览器缓存可能会成为问题。但是仍然没有运气。

以下是来自nginx容器的一些示例日志:
Camerons-Air:My-Site cameronhudson$ docker run -it --rm -p 80:80 gcr.io/my-site/github.com/cameronhudson8/my-site/frontend:latest
2019/07/28 17:55:50 [error] 7#7: *1 open() "/usr/share/nginx/html/dashboard" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /dashboard HTTP/1.1", host: "localhost"
172.17.0.1 - - [28/Jul/2019:17:55:50 +0000] "GET /dashboard HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-"

好像 try_files行被完全忽略了。

最佳答案

好吧,我发现nginx完全忽略了try_files行……因为我将default.conf复制到了错误位置的图像中。

我使用的位置:

/etc/conf.d/default.conf

正确的位置:
/etc/nginx/conf.d/default.conf

一个愚蠢的解决方案是一个愚蠢的问题,但是我想我会保留它,以防它对其他人有所帮助。

关于angular - `try_files`无法与Nginx Docker镜像一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57243563/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com