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

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

Как я могу получить его, если у меня один IP-адрес в Интернете, но много веб-имен? Например, когда у хостинговой компании есть общий IP-адрес, но я получаю неограниченное количество доменных имен (вместе со всеми остальными в этом поле).

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

Я хостинговая компания

Это часть протокола HTTP 1.1.

В частности, протокол HTTP 1.1 включает заголовок под названием «host:», который указывает, к какому веб-сайту на конкретном сервере клиент пытается получить доступ.

Итак, если snoopy.net и woodstock.org имеют общий адрес 192.0.32.10 и ваш браузер пытается получить контент из http://snoopy.net/doghouse конкретный HTTP-запрос будет выглядеть так:

GET /doghouse HTTP/1.1
Host: snoopy.net

Если желаемый URL-адрес http://woodstock.org/seeds запрос будет выглядеть как

GET /seeds HTTP/1.1
Host: woodstock.org

В обоих случаях между вашим компьютером и портом 80 сервера будет tcp-сокет. Сервер будет знать, что нужно получать контент из /var/www/snoopy.net или /var/www/woodstock.org/ на основе заголовка Host.

Могут быть другие заголовки для файлов cookie и других вещей, таких как тип браузера и разрешенный контент, но именно заголовок «Host» позволяет веб-серверу знать, какой виртуальный веб-сайт требуется.

В RFC2616.

По этой же причине https-сайты * должны *** иметь свой собственный IP-адрес - обмен ключами ssl и проверка сертификата происходят до транзакции http, поэтому http-сервер не узнает о выдаче сертификата для «woodstock». org "или" snoopy.net ", когда он получает https-соединение на порт 443 192.0.32.10.


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

** в комментариях Grawity указывает на то, что в спецификации TLS есть расширения для SSL, которые позволяют серверу знать, к какому веб-сайту пользователь пытается получить доступ, и что большинство современных веб-браузеров имеют эти расширения, поэтому должен слишком сильно.

Все современные браузеры отправляют вместе с запросом что-то, что называется заголовком «Host:».

Фактический запрос, который Firefox отправляет для этой страницы:

Host: superuser.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Как видите,

Host: superuser.com
bit identifies the website in question.

In IIS and Apache, you can configure Virtual Web Sites that only accept requests from a specific IP/Host combination.

Что касается вашей конкретной проблемы, вам нужно будет узнать, как ваша конкретная хостинговая компания хочет, чтобы вы запрашивали конфигурацию.

Методика размещения более одного домена / поддомена на одном IP-адресе / хосте называется виртуальные хосты. HTTP-запрос на получение содержит доменное имя, для которого предназначены запросы, что позволяет веб-серверу сопоставить запрос с конкретным виртуальным доменом.

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

Функцию на вашем веб-сервере обычно называют «виртуальными хостами». Как только вы укажете записи DNS, чтобы они указывали на этот один IP-адрес (как упоминалось в других ответах), сервер затем будет обслуживать разные сайты в зависимости от запрашиваемого хоста.

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

то есть host.com -> IP 1, затем www.host.com -> IP 2 и mail.host.com -> IP 3

Если вам нужны более конкретные ответы, вам нужно указать, какое программное обеспечение веб-сервера в какой операционной системе вы используете.

Вы можете найти ServeFault - лучшее место для ответа на этот вопрос.

Коротко...

Один - установите записи DNS для различных доменов так, чтобы все они указывали на ваш ящик.

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

Таким образом, все запросы для всех ваших доменов отправляются на один и тот же компьютер, и его конфигурация берет запрошенный домен и направляет его в нужную папку, содержащую контент этого сайта.

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

Если я правильно понимаю ваш вопрос, у вас есть два разных компьютера, использующих IP-адрес через NAT (преобразование сетевых адресов)? Если это так, вам нужно, чтобы один сайт прослушивал другой порт (не 80) - я не знаю хорошего способа, чтобы маршрутизатор отправлял запросы на разные компьютеры на основе метаданных HTTP «Host». Лучше просто получить второй IP-адрес для своего второго сервера.