Я хотел бы установить какой-нибудь сервер с несколькими виртуальными машинами на нем. И тогда каждая виртуальная машина будет содержать разные сайты. Итак, у моего хоста, например, есть DNS my.host.com, и я буду указывать на этот DNS, например, на другие адреса DNS, поэтому my.host.com - 1.2.3.4 my.host.com - virtual1.host.com my.host .com - virtual2.host.com
Теперь адреса виртуальной машины в частной сети: vm1 - 1.1.1.1 - и она держит сайт virtual1.host.com vm1 - 2.2.2.2 - и она держит сайт virtual2.host.com
Итак, мой вопрос в том, как я могу перенаправить на правильную виртуальную машину. Я имею в виду, что если я нажму virtual1.host.com, я перейду на свой хост, и хост должен перенаправить меня на сайт.
Я хочу использовать только порт 80 или 443. И какой брандмауэр или прокси я могу использовать для перенаправления этого типа? Также, может быть, для этого будет достаточно использовать iptables, и я тоже думал о HAproxy?
Какие-либо предложения ? И спасибо.
Хорошо, ребята, я сделал то, что хочу, на хосте, я использовал iptables, и я отбрасываю весь трафик с 80 до 8080 и с 443 до 8443 для прокси nginx, а затем с прокси я отправляю его на правильный адрес. Связь между vm (прокси) и vm (сайт) всегда осуществляется через порт 80
Мне пришлось настроить сертификат на виртуальной машине, где находится прокси, и подписать его на правильный DNS, а через proxy_pass отправить в пункт назначения есть пример confs:
iptables -t nat -A PREROUTING -d host_ip/32 -i eth0 -p tcp -m multiport --dports 80 -j DNAT --to-destination proxy_ip:8080
iptables -t nat -A PREROUTING -d host_ip/32 -i eth0 -p tcp -m multiport --dports 443 -j DNAT --to-destination proxy_ip:8443
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
тогда мой nginx работает в режиме chroot и есть конфигурация:
server {
listen 8080 ;
server_name site_dns;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 8443 default_server;
server_name site_dns;
ssl on ;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
access_log /var/log/nginx/site.access.log ;
error_log /var/log/nginx/site.error.log ;
location / {
proxy_pass http://site_ip_vm;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_cache one;
proxy_cache_key site$request_uri;
proxy_cache_valid 200 3h;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_ignore_headers Expires Cache-Control;
proxy_redirect http:// https://;
proxy_buffering on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
и apache прослушивает только порт 80. поэтому все вычисления, связанные с сертификатами, выполняются на прокси-сайте, а apache не обременен, плюс механизм кеширования должен давать мне хорошую производительность в любом случае, я увижу через некоторое время.