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

Какой код состояния HTTP должен вернуть старый VirtualHost после миграции

Мы переместили веб-сайт с одного сервера на другой.

DNS был обновлен соответствующим образом, но некоторые серверы не соблюдают TTL, а в некоторых местах IP-адрес старого сервера может быть жестко задан.

Как мне сообщить им, что VirtualHost больше нет?

Есть ли для этого подходящий код статуса HTTP (возможно, 503)?

Если это не ответственность HTTP, есть ли лучший способ?

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

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

Код состояния HTTP 301 используется для обозначения того, что сайт окончательно переехал в новое место в соответствии с RFC2616 (Серия 500 обычно указывает на ошибки сервера), однако при перенаправлении обычно используется имя хоста URL / DNS. Если ваша проблема связана только с TTL, использование 301 не сработает, если у вас нет обоих новых IP-адресов. и новый URL тоже. Фактически, использование переадресации 301 нарушит веб-трафик на ваш сайт, поскольку браузер пользователя будет просто перенаправлять снова и снова в одно и то же место, никогда не загружая веб-страницу.

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

В противном случае вы можете захотеть отобразить страницу обслуживания, информирующую пользователя о проблеме и предлагающую ему связаться со своим ИТ-отделом и сообщить о проблеме.