大佬教程收集整理的这篇文章主要介绍了AWS ALB 将 HTTPS 重定向到 HTTP 而没有尾部斜杠,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个运行在端口 8080 上的 Nginx 服务器,它位于 AWS 应用程序负载均衡器后面。我在 Nginx.conf、
中有以下位置块LOCATIOn / {
limit_except GET { deny all; }
root /root/of/project/;
index index.HTML;
try_files $uri $uri/ /index.HTML;
}
当我在本地运行服务器时,我能够点击 /some/path/ 和 /some/path 并获得相同的响应,即尾部斜杠不不影响任何事情。当我部署应用程序时,我希望有相同的行为。
我在端口 80 上设置了带有 http 侦听器的 AWS ALB,该侦听器将所有流量重定向到端口 443 上的 httpS 侦听器。httpS 侦听器只是转发到 Nginx 服务器所在的目标组。这是我仅有的两条负载均衡器规则,仅此而已。
在我部署应用程序后,当我点击带有斜杠(例如 https://example.com/about/)的网址时,一切正常。它按预期加载。没有重定向或任何东西。我可以在 Nginx 日志中看到请求通过。
但是,如果我点击了一个没有斜杠的 URL,例如
https://example.com/about
ALB 重定向到
http://example.com:8080/about/
然后从不加载。我从未在 Nginx 服务器上看到该请求的任何日志,这意味着它从未从 ALB 传递到目标组。请求在几分钟后超时。
似乎 ALB 可能正在尝试将请求转发到目标组,因为 8080 是运行 Nginx 服务器的端口,但我不确定为什么请求永远不会到达。似乎尾部斜杠不会影响请求是否被转发,但我不确定。
我想也许我可以设置一个规则,将没有尾部斜杠的路由重定向到在 ALB 级别带有尾部斜杠的同一路由,但负载均衡器规则只有通配符,没有正则表达式。所以,这是一个死胡同。不过,我不确定这是否能解决问题,因为问题似乎出在 ALB 级别,而不是应用程序级别。
有人知道发生了什么吗?
编辑:负载均衡器规则:
昨天遇到了这个问题,我在 443 上只有一个 ALB 侦听器,而 nginx 在 80 上打开,我想我用“absolute_redirect off”修复了它;在 nginx 配置中。我的完整配置文件:
server {
listen 80;
absolute_redirect off;
LOCATIOn / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ $uri/index.html =404;
}
error_page 500 502 503 504 /50x.html;
LOCATIOn = /50x.html {
root /usr/share/nginx/html;
}
}
,
更好的设置是在您的 ALB 上简单地执行 SSL 终止,然后使用转发规则创建 http 侦听器,该转发规则将您的目标组作为目的地。这在简化证书管理、性能等方面具有多种好处。
在此处阅读有关 setTing up http listener
最好的, 斯蒂芬
以上是大佬教程为你收集整理的AWS ALB 将 HTTPS 重定向到 HTTP 而没有尾部斜杠全部内容,希望文章能够帮你解决AWS ALB 将 HTTPS 重定向到 HTTP 而没有尾部斜杠所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。