Я знаю, что этот вопрос задан раньше, но для меня ничего не работает. Я пытался несколько различных вещей, таких как ответы, описанные в этих вопросах:Эластичный переплет Beanstalk Http перенаправления на Https
How to get Elastic Beanstalk nginx-backed proxy server to auto-redirect from HTTP to HTTPS? Redirecting EC2 elb from http to https
Ни один из них не похоже на работу. Я aws noob, поэтому я не совсем уверен, как работает редактирование файлов конфигурации, или если я сделал что-то неправильно.
Моя установка следующие:
- Route 53 указывает на Elastic Beanstalk (Nginx)
- ELB port configuration with ACM certificate (с использованием протокола TCP/SSL, как это делает мои WebSockets работы)
- nodejs приложение на порту 8080
Мой текущий файл nginx.config в моей папке .ebextensions (получил это от this article):
files:
"/tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf" :
mode: "000755"
owner: root
group: root
content: |
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
set $fixedWWW '';
set $needRedir 0;
# nginx does not allow nested if statements
# check and decide on adding www prefix
if ($host !~* ^www(.*)) {
set $fixedWWW 'www.';
set $needRedir 1;
}
# what about that https? the traffic is all http right now
# but elastic load balancer tells us about the original scheme
# using $http_x_forwarded_proto variable
if ($http_x_forwarded_proto != 'https') {
set $needRedir 1;
}
# ok, so whats the verdict, do we need to redirect?
if ($needRedir = 1) {
rewrite ^(.*) https://$fixedWWW$host$1 redirect;
}
location/{
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
gzip on;
}
Но это ничего не делает. У меня кончились идеи. Я не уверен, что мне не хватает шага или чего-то другого, но я не знаю, что делать. В качестве обходного решения у меня есть мой frontularjs front end, перенаправляющий запросы без https, но это слишком хакерское, а некоторые из DOM отображаются перед перенаправлением, я бы хотел перенаправить на балансировщик нагрузки - там, где он должен перенаправляться.
На первый взгляд, конфигурация Nginx выглядит правильно. Он проверяет заголовок x-forwarded-proto и перенаправляет, если не «https». Похоже, вы также перенаправляетесь из голого домена в субдомен www, это работает? Вы уверены, что конфигурация nginx фактически применяется к вашим серверам beanstalk? –
Я на самом деле просто указал голый домен на www в маршруте 53, а затем www указывает на EB. Таким образом, проверка на данный момент является излишней. Как я могу проверить, переопределяет ли этот файл файл по умолчанию? – KDogg
[Что вы делали KDogg] (https://xkcd.com/979/)? У меня такая же проблема! –