Nginx SSL перенаправление из внутреннего расположения - PullRequest
0 голосов
/ 01 марта 2019

Я делаю довольно неприятные вещи с nginx.Вот вид с высоты птичьего полета.

nginx играет роль посредника между мириадами ведер S3.Чтобы определить правильный сегмент, я использую сценарии Lua поверх платформы OpenResty.

Итак, сначала запрос входит в / местоположение и обрабатывается сценарием 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 из-за NDA (надеюсь, вы меня понимаете), но он выполняет следующий вызов где-то между условиями:

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 голосов
/ 11 марта 2019

Хорошо, ответ - сделать ngx.redirect ДО ngx.exec (т.е. в файле Lua).Нет необходимости в специальной обработке внутри nginx.conf.

...