我有一个 http 服务,我的 Web 应用程序在生产和开发期间必须使用它。我想将此http
服务上的所有流量重定向到,https
除非请求来自lvh.me:9292
引荐来源(即我们在开发期间使用的 URL)。我的天真做法如下map
:
map "$scheme:$http_referrer" $redirect_https {
~/^https/ 0;
~/.*lvh\.me:9292.*/ 0;
default 1;
}
据我理解,这应该只是将$scheme
和连接起来$http_referrer
,然后将与我定义的(粗略)表达式匹配。然后重定向写成如下形式:
if ($redirect_http = 1) {
return 301 https://$host$request_uri;
}
然而总是无论我请求什么 URL(带或不带 https,带或不带匹配的 referrer),都会导致无休止的重定向循环。我是不是误解了某些重要的东西?我简化的正则表达式是否不正确?有没有更好的方法来实现我想要的效果?