gpt4 book ai didi

node.js - nginx 响应 "301 moved permanently"

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:30 25 4
gpt4 key购买 nike

考虑以下 nginx 配置文件:

server {
listen 443;
ssl on;
ssl_certificate /etc/tls/cert.pem;
ssl_certificate_key /etc/tls/key.pem;
location / {
proxy_pass http://api.default.svc.cluster.local;
}
}

443 上的所有传入 TCP 请求都应重定向到我在 api.default.svc.cluster.local:80 上运行的服务器(顺便说一句,这是一个 Node REST-Api)。这很好用,我可以 curl https://<nginx-IP>/ nginx 并按预期获得正确的响应。

现在,我想将位置从 / 更改为至 /api , 所以我可以发射 curl https://<nginx-IP>/api为了获得与以前相同的响应。

<强>1。尝试

所以我将配置中的位置行更改为:

location /api {

不幸的是,这行不通,我得到了一个错误 Cannot GET /api这是一个 Node 错误,所以很明显它被路由到 api,但有些东西仍然很臭。

<强>2。尝试

似乎 URI 中的尾部斜杠是必需的,所以我将其添加到位置:

location /api/ {

现在情况发生了变化。我不会得到与以前相同的错误,而是得到“301 永久移动”。如何修复我的 nginx 配置文件?

关于环境的附加信息

我正在使用部署 nginx 反向代理的 kubernetes 部署,包括。配置介绍。然后我使用 kubernetes 服务公开 nginx。此外,我尝试使用 kubernetes ingress 来处理这种情况,使用相同的路由,但是,ingress 服务会以 default backend - 404 响应。消息。

最佳答案

如问题中所述,URI 中的尾部斜杠很重要。我在该位置修复了它,但是,我没有将它添加到我使用 proxy_pass 传递的 URI。

至于 nginx 代理,我使用以下配置让它工作:

server {
listen 443;
ssl on;
ssl_certificate /etc/tls/cert.pem;
ssl_certificate_key /etc/tls/key.pem;
location /api/ {
proxy_pass http://api.default.svc.cluster.local/;
}
}

关于入口解决方案,我无法通过将缺少的尾部斜杠添加到路径来使其工作。该服务是根据其名称指定的,因此不能添加尾部斜杠(即会导致错误)。

关于node.js - nginx 响应 "301 moved permanently",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43309821/

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