Я создал следующую настройку на OpenBSD:
Итак, у меня есть сервер OpenBSD. 192.168.1.250
перенаправление всех http-запросов на host-vm
на 192.168.30.2
.
В host-vm
сам работает nginx
для перенаправления запросов на поддомены так:
## the virtual server for the foo-vm
server {
listen 80;
server_name foo.hermes-technology.de;
location / {
proxy_pass http://192.168.30.3;
}
}
## the virtual server for the bar-vm
server {
listen 80;
server_name bar.hermes-technology.de;
location / {
proxy_pass http://192.168.30.4;
}
}
foo.hermes-technology.de
этот запрос будет перенаправлен на host-vm
.host-vm
перенаправляет запрос на основе имя поддомена на локальный IP-адрес foo-vm
.Я хотел бы зависеть только от базовых пакетов OpenBSD, поэтому мой вопрос:
Как это возможно перенаправить запросы субдоменов на хост-машине на другие локальные IP-адреса, достигая того же результата, что и выше, только используя httpd
и relayd
?
Если вам нужна дополнительная информация об этой настройке для ответа на мой вопрос, у меня есть запись всей конфигурации здесь: blog.hermes-technology.de.
Что касается relayd, я думаю, что-то вроде достижения того, чего вы хотите:
Это определяет ip, где вы можете найти "сервис" foo, это в основном список хостов (стиль pf)
table <fooservice> { 192.168.30.3 }
table <barservice> { 192.168.30.4 }
Здесь вы определяете шаблон для правил, которые будут применяться в разделе ретрансляции, вы сопоставляете запрос с заголовком Host, являющимся foo.hermes-technology.de, и в этом случае вы перенаправляете на хост, находящийся в таблице fooservice в relayd руководство они говорят, что прямая секция нуждается в соответствующей прямой инструкции в релейной секции
http protocol "httpproxy" {
pass request quick header "Host" value "foo.hermes-technology.de" \
forward to <fooservice>
pass request quick header "Host" value "bar.hermes-technology.de" \
forward to <barservice>
block
}
Это определяет реле и использует как таблицы, так и протокол, определенные выше.
relay "proxy" {
listen on 192.168.30.2 port 80
protocol "httpproxy"
forward to <fooservice> port 80
forward to <barservice> port 80
}