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

OpenBSD: Как использовать relayd и httpd для перенаправления запросов субдоменов

Ситуация

Я создал следующую настройку на 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;
    }
}

Вопрос

Я хотел бы зависеть только от базовых пакетов 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
}