Можно ли форсировать https только на AWS Lightsail? - PullRequest
0 голосов
/ 14 мая 2018

Я использую AWS Lightsail Load Balancer в сочетании с другим экземпляром Lightsail ec2, чтобы я мог использовать бесплатный менеджер сертификатов, встроенный в Lightsail Load Balancer. Похоже, что это автоматически перенаправляет весь трафик с моего балансировщика нагрузки на мой сервер ec2 nginx на port 80, поэтому следующая конфигурация также поддерживает https соединения:

server {
    listen       80;
    server_name  mountainviewwebtech.ca www.mountainviewwebtech.ca;

    location / {
        proxy_pass              http://localhost:3000;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
    }
}

Однако, когда я добавляю следующие строки, чтобы гарантировать, что http перенаправляет на https, я получаю ошибку ERR_TOO_MANY_REDIRECTS, так как мой экземпляр ec2 получает трафик только на port 80 даже при использовании безопасного соединения, так он просто продолжает перенаправлять снова и снова.

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

Есть ли способ получить оригинал $scheme до того, как он был отправлен в мой экземпляр ec2?

1 Ответ

0 голосов
/ 31 октября 2018

Если вы хотите получить «бесплатный» сертификат SSL, использование CertBot от Let's Encrypt поможет вам (и сэкономит ваши деньги). У меня был хороший успех с этой опцией.

Использование балансировщика нагрузки в качестве ограничителя SSL завершает безопасное соединение на балансировщике нагрузки. Таким образом, незашифрованный трафик отправляется от балансировщика к вычислительным экземплярам (порт 80). Если вы хотите перенаправить трафик SSL на вычислительные экземпляры, посмотрите, будет ли балансировщик нагрузки выполнять переадресацию портов. Это Lightsail, я сомневаюсь, что это будет возможно.

...