首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer 上测试了教程
这工作正常。我还测试了相同的教程,但也添加了一个 tls 秘密来测试 https,它也运行良好。
当我创建自己的图像时,我的问题就出现了。这是我采取的步骤:
# 我们将我们的舞台标记为“builder”
FROM node:9.4.0-alpine 作为构建器
复制 package.json package-lock.json ./
## 将节点模块存储在单独的层上将防止在每次构建时安装不必要的 npm
运行 npm i && mkdir /srv/cs-ui && cp -R ./node_modules ./srv/cs-ui
工作目录 /srv/cs-ui
复制 。.
## 在生产模式下构建 angular 应用程序并将工件存储在 dist 文件夹中
运行 $(npm bin)/ng build --environment "prod"
从 nginx
## 复制我们的默认 nginx 配置
复制 nginx/default.conf /etc/nginx/conf.d/
##删除默认的nginx网站
运行 rm -rf /usr/share/nginx/html/*
## 从“builder”阶段将 dist 文件夹中的工件复制到默认的 nginx nginx 公共文件夹
复制 --from=builder /srv/cs-ui/dist /usr/share/nginx/html/
版本:'2' 服务: …
google-cloud-platform kubernetes google-kubernetes-engine docker-ingress
我想将 http 重定向到 https 并通过一次重定向删除 nginx 中的尾部斜杠。我今天的解决方案如下:
server {
listen 80;
server_name www.example.com
rewrite ^/(.*)/$ /$1 permanent;
return 301 https://$host$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案的问题是它会给出两个重定向
给出两个重定向:
http://www.example.com/test/ --> http://www.example.com/test
http://www.example.com/test --> https://www.example.com/test
Run Code Online (Sandbox Code Playgroud)
是否有可能制定一个解决方案,让您只能获得一个像下面这样的重定向?
http://www.example.com/test/ --> https://www.example.com/test
Run Code Online (Sandbox Code Playgroud)
当我查看 nginx 重写和返回方法的文档时,我觉得应该可以以某种方式通过一次重写来完成它:
rewrite ^/(.*)/$ https://$host$request_uri permanent;
Run Code Online (Sandbox Code Playgroud)
但我尝试过的任何东西都没有给我正确的结果。