Nginx SSL从内部地址重定向

我在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;
}

我无法向您展示完整的Lua脚本,因为受到保密协议的限制(希望您明白),但它在条件之间做出了下一个调用:

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?

点赞
用户945193
用户945193

Ok, 答案是在 Lua 文件中在 ngx.exec 之前进行 ngx.redirect。无需在 nginx.conf 中进行特殊处理。

2019-03-11 16:58:57