Назад | Перейти на главную страницу

Использование htaccess с Elastic Load Balancer и Route 53

Я перенес свой DNS на Route 53 и в настоящее время использую запись псевдонима, чтобы указать мои www.domain.com и domain.com на мой Elastic Load Balancer.

Оба работают отлично, но моя проблема в том, что я пытаюсь использовать файл htaccess для перенаправления не-www на www. Он просто не выполняет поиск DNS и выдает ошибки, когда я захожу на domain.com и перенаправляюсь на www.domain.com, переход прямо на www.domain.com все еще работает.

Прежде чем я сделал все с балансировщиком нагрузки и когда я просто тестировал экземпляр, я бы использовал общедоступный DNS для своего домена, например, ec2-99-99-999-99.compute-1.amazonaws.com и когда Я вставляю файл htaccess, он перескакивает на www.ec2-99-99-999-99.compute-1.amazonaws.com и выдает ошибку.

Любая помощь будет очень признательна, так как я рву волосы из-за этого.

Не видя вашего файла .htaccess, не совсем понятно, что происходит, но что-то вроде этого должно работать, если у вас включен mod_rewrite:

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^/?(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Редактировать:

Если вы видите ошибку 502 от ELB, вероятно, это связано с тем, что ваше приложение не возвращает полный заголовок ответа, а просто возвращает код ответа HTTP. Об этом говорили на форумах разработчиков EC2: https://forums.aws.amazon.com/message.jspa?messageID=345128

Вы можете решить эту проблему, отслеживая сетевой трафик на сервере, чтобы определить, какие заголовки и коды ответов отправляются обратно в ELB. Вероятно, вам следует сделать это, когда он терпит неудачу (на мобильном телефоне) и преуспевает (на вашем ПК).

Предполагая, что на вашем сервере работает Linux, нгреп хороший простой инструмент для этого:

# Just show HTTP traffic
ngrep -q '' port 80

# Just show GET and POST requests
ngrep -t '^(GET|POST) 'port 80'

В противном случае вы можете использовать Wireshark, который отлично работает под Windows.