У меня есть домен foo.this.com. Я хочу, чтобы он отображался на bar.that.com, поэтому я создал cname в интерфейсе своего реестра. Однако, когда я пытаюсь зайти на foo.this.com, он показывает 404, указывающее на IP-адрес bar.that.com.
Итак, мой вопрос: что мне нужно настроить на моем сервере (на котором размещена веб-страница bar.that.com), чтобы распознавать foo.this.com?
заранее спасибо.
То, что вы хотите сделать, подпадает под термин Виртуальный хостинг на основе имени
Технически происходит то, что веб-браузер разрешает bar.that.com
на IP-адрес (например, 1.2.3.4
). Затем он отправляет HTTP-запрос на 1.2.3.4
. Хост обычно не знает об имени, которое использовалось для его адресации.
Однако специальная функция HTTP 1.1 позволяет браузеру вставлять имя хоста в заголовок HTTP. Типичный HTTP-заголовок выглядит так:
GET / HTTP/1.1
Host: bar.that.com
Затем веб-сервер принимает решение в соответствии с содержанием Host:
заголовок, какие страницы доставить. Конечно, вы должны сказать ему, как решать в его конфигурации. Для Apache см. Вот, но на любом современном веб-сервере будет нечто подобное.
Виртуальный хостинг на основе имен широко используется, каждый раз, когда вы слышите термин «виртуальный хостинг», думайте о виртуальном хостинге на основе имен. HTTP 1.1 достаточно длинный, чтобы его поддерживали все используемые браузеры. Только очень-очень старые браузеры, такие как NCSA Mosaic, не поддерживали его.
Это зависит от того, какой демон http вы используете.
Если вы используете Apache HTTPD с виртуальный хост записи, вам, скорее всего, потребуется добавить директиву ServerAlias в запись VirtualHost для вашего сайта.
<VirtualHost *:80>
ServerName bar.that.com
ServerAlias foo.this.com
DocumentRoot /home/that.com
... snip ...
</VirtualHost>
Если вы используете IIS, вам нужно добавить заголовки хоста на веб-сайт bar.that.com для foo.this.com.
Для nginx, если вы хотите, чтобы директива обрабатывала более одного домена / поддомена, вы можете поместить их все в директиву server_name. Например,
server {
listen 80;
server_name foo.bar.com baz.foo.com bar.foo.com *.foo.com;
[.......]
}