Nginx SSL从内部位置重定向

时间:2019-03-01 18:04:49

标签: nginx lua openresty

我正在用Nginx做一些令人讨厌的事情。这是鸟瞰图。

nginx充当无数S3存储桶之间的代理角色。为了确定正确的存储桶,我在OpenResty平台上使用Lua脚本。

因此,首先请求进入/位置并由Lua脚本处理。

location / {
  listen 8001;
  server_name $hostname;
  access_by_lua_file '/srv/hostingrouter/live/hostingrouter/storerouter.lua';
  proxy_pass http://$remote;
}

location ~ /s3/(?<s3_key>.+) {
  internal;
  proxy_pass $s3;
  rewrite .* /$s3_key break;
}

由于NDA,我无法向您显示完整的Lua脚本(希望您Killaz理解我),但是它会在条件之间的某个位置进行下一个调用:

return ngx.exec(
  '/s3/' .. s3_key
)

棘手的部分是Lua脚本也执行其他一些重定向。但是只有在上面显示的特定情况下,我才需要将URL从HTTP重写为HTTPS。

我相信rewrite http:// https:// break;不会起作用,因为匹配的路径没有方案(我也尝试过,但它没有作用)。此外,我尝试执行条件重定向:

if ($scheme = http) {
  return 301 https://$host$request_uri;
}

但是它导致了循环重定向。

如何从内部位置从HTTP重定向到HTTPS?

1 个答案:

答案 0 :(得分:0)

好吧,答案是在ngx.redirect之前(即在Lua文件中)创建一个ngx.execnginx.conf内部不需要特殊处理。