Как зайти на сайт на общем сервере по его IP-адресу?

у меня есть несколько вопросов, просьба помочь:

кулак, я могу получить доступ к Google search, просто набрав http://74.125.224.211, поскольку это IP-адрес, возвращаемый nslookup.

однако, я не мог сделать это с IP-адресами, возвращенными из www.yahoo.com. Как перейти на страницу поиска Yahoo по IP-адресу?

другой пример:http://www.allaboutcircuits.com разрешает 68.233.243.63 на DNS-сервере, но если я иду в http://68.233.243.63, я получаю "Привет, мир!".

во-вторых, по какой-то причине что-то не так с DNS резольверов с моим веб-хостинга (это не будет исправлено !!). Поэтому команды вроде

get_file_contents("http://www.allaboutcircuits.com");

вернутся php_network_getaddresses: getaddrinfo failed: Name or service not known

как обойти это с IP-адресом,

68.233.243.63

Я имею в виду, каким-то образом присоединить параметр HTTP hostname к get_file_contents()?

я хотел бы решить эту проблему на своей стороне (в моем коде), нет устранения неполадок/корректировки не будет сделано сервером администратор.

22
задан Alex
01.04.2023 5:03 Количество просмотров материала 3341
Распечатать страницу

5 ответов

в вашем PHP скрипте, когда вы обращаетесь к нему по IP адресу, Вам также нужно отправить Host: заголовок в запросе с правильным доменным именем.

этот вопрос о переполнении стека объясняет, как это сделать: https://stackoverflow.com/questions/356705/how-to-send-a-header-using-a-http-request-through-a-curl-call

16
отвечен Grant 2023-04-02 12:51

Как сказал валлик, это виртуальные серверы

возьмем этот пример для apache

<VirtualHost *:80>
ServerName example2.com
DocumentRoot C:/www/example2.com
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
DocumentRoot C:/www/example.com
</VirtualHost>

в c:\www\example.com создайте индексный файл с надписью " Hello World! example.com"

в c:\www\example2.com сделать файл index говорю "Хеллоу мира! example2.com"

и измените файл hosts на

127.0.0.1 example.com
127.0.0.1 example2.com

затем перейдите к http://example.com затем перейдите к http://example2.com

Так вот как вы может иметь несколько сайтов на один ip

Так что в основном ответ, Нет, вы не сможете получить этот сайт с ip.

10
отвечен Kris 2023-04-02 15:08

вы говорите, что хотите вручную указать имя хоста и IP-адрес, вместо того, чтобы полагаться на DNS-сервер вне вашего контроля. Глядя на комментарии в документация функции file_get_contents, Я вижу, что комментаторы там решили аналогичные проблемы, создав контекст, содержащий необходимый заголовок Host:. Что-то вроде этого:

$context = stream_context_create(array('http' => array('header' => 'Host: www.allaboutcircuits.com')));
$data = file_get_contents('http://68.233.243.63/', 0, $context);

конечно, имейте в виду, что недостатком ручного указания имени хоста и IP-адреса является что если IP-адрес в будущем изменится (например, если сайт перейдет к новому хостинг-провайдеру), ваш код может перестать работать, пока вы не обновите IP-адрес вручную.

5
отвечен Bavi_H 2023-04-02 17:25

одного IP-адреса недостаточно, чтобы однозначно определить, на какой сайт вы хотите перейти, когда несколько виртуальных хостов работают на одном порту/сервере. В этом случае необходимо указать заголовок узла в HTTP-запросе, определяющий имя сервера. Вы можете сделать это непосредственно через telnet на порт 80:

$ telnet 68.233.243.63 80
Trying 68.233.243.63...
Connected to 68.233.243.63.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.allaboutcircuits.com

, где вы вводите команду telnet и строки GET и Host, а затем получаете исходный код HTML, возвращенный с сервера.

или вы можете использовать curl где вы специально добавляете заголовок (с помощью -H флаг).

curl 68.233.243.63 -H "Host: www.allaboutcircuits.com"
2
отвечен dr jimbob 2023-04-02 19:42

во-вторых, почему-то что-то не так с DNS-резольверами в моем хостинге (это не будет исправлено !!)

вы можете использовать другой DNS-сервер на стороне клиента, если это не веб-хост - 8.8.8 и 8.8.8.6 управляются Google, а 4.4.4.2-общий резерв. Namebench позволит вам найти быстрый. В качестве альтернативы вы можете использовать какой-то прокси-сервис (я запускаю свой собственный на VPS или использую Tor, но есть другие опционы.)

Так как это PHP, еще более простым вариантом будет запуск кода на другой системе. Клуджи не ремонтопригодны.

1
отвечен Journeyman Geek 2023-04-02 21:59

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

http
ip-address
php
virtual-host
web-hosting
Вверх