![Попытка доступа к сайту по IP или с помощью ssh -L выдает Server 404](https://rvso.com/image/1314342/%D0%9F%D0%BE%D0%BF%D1%8B%D1%82%D0%BA%D0%B0%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0%20%D0%BA%20%D1%81%D0%B0%D0%B9%D1%82%D1%83%20%D0%BF%D0%BE%20IP%20%D0%B8%D0%BB%D0%B8%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20ssh%20-L%20%D0%B2%D1%8B%D0%B4%D0%B0%D0%B5%D1%82%20Server%20404.png)
Я пытаюсь получить доступwww.fallenlondon.comпо его IP-адресу. Однако оба ebz-2-1147703023.eu-west-1.elb.amazonaws.com
и 46.137.175.221
выдают ошибку сервера: 404.
У меня возникает та же проблема, если я это делаю, ssh -L *:8080:www.fallenlondon.com:80 me@myremotehost
а затем перехожу на localhost:8080
(это отлично работает для Google и нескольких других случайных сайтов, которые я пробовал).
Может кто-нибудь объяснить, что здесь происходит? Решение тоже было бы очень кстати.
Редактировать: СогласноОтвет Кайла Джонса, по-видимому, это вызвано тем, что в заголовок HTTP-хоста не включена (желаемая) информация о доменном имени, необходимая серверу для устранения неоднозначности и предоставления мне нужного результата.
Есть ли способ убедиться, что заголовок содержит то, что мне нужно, в обоих случаях использования?
nslookup:
nslookup www.fallenlondon.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.fallenlondon.com canonical name = ebz-2-1147703023.eu-west-1.elb.amazonaws.com.
Name: ebz-2-1147703023.eu-west-1.elb.amazonaws.com
Address: 46.137.175.221
хозяин:
host www.fallenlondon.com
www.fallenlondon.com is an alias for ebz-2-1147703023.eu-west-1.elb.amazonaws.com.
ebz-2-1147703023.eu-west-1.elb.amazonaws.com has address 46.137.175.221
host fallenlondon.com
fallenlondon.com has address 46.137.122.254
fallenlondon.com mail is handled by 30 aspmx3.googlemail.com.
fallenlondon.com mail is handled by 10 aspmx.l.google.com.
fallenlondon.com mail is handled by 20 alt1.aspmx.l.google.com.
fallenlondon.com mail is handled by 20 alt2.aspmx.l.google.com.
fallenlondon.com mail is handled by 30 aspmx2.googlemail.com.
решение1
IP-адрес не обязательно уникален для конкретного веб-сайта.
В течение многих лет поставщики веб-услуг использовали заголовок HTTP 1.1 Host для различения веб-сайтов и обслуживания нескольких веб-сайтов с одного IP-адреса. Ваш веб-браузер отправляет заголовок Host на веб-сервер, сообщая ему доменное имя запрошенного вами сайта, и сервер отвечает правильной страницей. Если вы указываете только IP-адрес, сервер не может определить, какой сайт (из многих, возможно, за IP-адресом) вам нужен. В этой ситуации некоторые сайты возвращают общую страницу, а некоторые возвращают браузеру код ошибки.
Я думаю, вам придется добавить запись для www.fallenlondon.com в /etc/hosts (или любую эквивалентную статическую таблицу хостов, поддерживаемую вашей системой), которая указывает на 127.0.0.1. Затем вы можете использовать www.fallenlondon.com:8080 для достижения локальной конечной точки вашего туннеля, и заголовок Host с правильным доменом будет отправлен через туннель ssh на сервер AWS. Я попробовал это здесь, и это сработало для меня.