OpenBSD:如何使用 `relayd` 和 `httpd` 重定向子域名请求

OpenBSD:如何使用 `relayd` 和 `httpd` 重定向子域名请求

情况

我创建了以下设置OpenBSD

虚拟机服务器结构

因此,我让我的 OpenBSD 服务器将192.168.1.250所有 http 请求重定向host-vm192.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;
    }
}
  • 因此如果用户发送 http 请求到,foo.hermes-technology.de该请求将被重定向到host-vm
  • 此后,将host-vm根据以下条件重定向请求:子域名到 的本地 ip foo-vm

问题

我只想依赖 OpenBSD 的基本包,所以我的问题是:

如何可能重定向子域名请求在主机上到其他本地 IP 地址,仅使用httpd和即可实现与上述相同的结果relayd

更多信息

如果您需要或想要有关此设置的更多信息来回答我的问题,我在这里提供了整个配置的说明: 博客.hermes-technology.de

答案1

关于relayd,我猜类似的事情可以实现你想要的:

这定义了你可以找到 foo “服务”的 IP,它基本上是一个主机列表(pf 样式)

table <fooservice> { 192.168.30.3 }
table <barservice> { 192.168.30.4 }

在这里,您定义了一个模板,用于在中继部分应用规则,您将请求与标头 Host 匹配,后者是 foo.hermes-technology.de,在这种情况下,您将转发到位于表 fooservice 中的主机中继手册他们说转发部分需要中继部分中匹配的转发指令

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
}

相关内容