2015-02-18 4 views
4

Я стараюсь дать общую картину моей проблемы. У меня есть домен GoDaddy, с AWS Route53 для управления записями DNS. Route53 отправляет запрос на балансировщик нагрузки.Ответ Amazon AWS 307 и постоянная переадресация на HTTPS

Для веб-сервера У меня есть балансировщик нагрузки, который направляет запросы одному экземпляру EC2 (на данный момент), а nginx в экземпляре EC2 получает запрос и отправляет ответ клиенту.

Проблема заключается в том, что, когда я использую http:// для выполнения запроса, AWS перенаправляет запросы на версию домена https:// с ответом 307 Internal Redirect. Объект ответа также имеет заголовок Non-Authoritative-Reason: HSTS.

В чем проблема и какой компонент перенаправляет запросы?

+0

Какие слушатели вы настроили на своем ELB? – datasage

ответ

22

Это не компонент.

Это не что-нибудь из AWS ... это браузер. Это внутренний redirect браузер генерирует, что связано с HSTS ... HTTP Strict Transport Security.

Если вы не делаете этого сейчас, то, предположительно, в прошлом вы создали заголовок Strict-Transport-Security: в ответах этого домена, и браузер запомнил этот факт, не позволяя вам получить доступ к сайту небезопасно, поскольку он предназначен для этого.

+5

Я ничего не знаю! Спасибо. –

+3

Я знаю, что комментарии не должны использоваться, чтобы сказать спасибо и прочее, но ... Я ❤ вы. – dgilperez

+0

Вам нужно удалить HSTS из заголовка ответа. В моем случае он был установлен из nginx add_header (ngx_http_headers_module). –

8

Я знаю, что я остался на вечеринке, но я хотел опубликовать полное полное решение, которое это вдохновило от this post на форумах Wordpress.

Просто удаление заголовка HSTS с сервера не решит его, потому что браузер кэшировал ответ HSTS и будет продолжать запускать https: // для этого сайта независимо. В Chrome/Chromium вы можете удалить веб-сайт с about://net-internals/#hsts, но это вряд ли является решением для ваших посетителей, поскольку вы не знаете, сколько уже кэшировало его как HSTS.

На стороне сервера вам необходимо установить max-age=0, который будет (согласно RFC) просит обозревателя прекратить рассматривать этот хост как HSTS.

В Apache, выполните следующие действия:

<IfModule mod_headers.c> 
    Header always set Strict-Transport-Security "max-age=0" 
</IfModule> 

и убедитесь, что вы включили headers модуль (вы можете использовать a2enmod headers на Ubuntu/Debian/монетный двор).

Смежные вопросы