У нас есть много сторонних сайтов на ip1, у которых есть свои собственные записи A.
Мы хотим переехать на новый хост и использовать ip2, и хотя мы можем обновить DNS до ip2 для вещей, которые мы контролируем, у нас есть около 100 человек, у которых будет время простоя, пока они это выяснят.
.. есть ли способ для Apache или Nginx получить запрос на DomainA и создать перенаправление или туннель к новому серверу для обслуживания ресурсов?
Я в порядке, если он медленный (э-э), главное - время безотказной работы.
Я видел мод-прокси и т. Д., Но это рекомендуемое решение или есть более производительный способ?
Настройка обратного прокси-сервера - идеальный способ. Если расстояние между новым и старым сервером невелико, изменение времени отклика будет минимальным.
Как вы упомянули, mod_proxy - одно из возможных решений, если вы используете apache. Nginx имеет встроенный обратный прокси-сервер и не требует дополнительных модов.
Если вашим решением будет nginx, настройка будет выглядеть так:
upstream newserver {
server YourNewIpHere:port; # EDIT THIS
}
server {
server_name domains that needs to be forwarded space delimited; # EDIT THIS
listen 80; # for http
listen [::]:443; # for ssl
proxy_set_header X-Real-IP $remote_addr; # this passes the actual user IP to the new server
proxy_set_header Host $host; # same for the host
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
location / {
proxy_pass newserver;
}
}
Официальный гид: https://www.nginx.com/resources/admin-guide/reverse-proxy/
а на принимающем сервере nginx вам необходимо настроить его так, чтобы перенаправляемый адрес был реальным. Синтаксис для него выглядит так:
set_real_ip_from IpOfOldServer; # EDIT THIS
real_ip_header X-Forwarded-For;
Документы: http://nginx.org/en/docs/http/ngx_http_realip_module.html
Аналогичную настройку необходимо выполнить, если вы используете mod_proxy для apache. Документы для mod_proxy: https://httpd.apache.org/docs/2.4/mod/mod_proxy.html