情况
我创建了以下设置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;
}
}
- 因此如果用户发送 http 请求到,
foo.hermes-technology.de
该请求将被重定向到host-vm
。 - 此后,将
host-vm
根据以下条件重定向请求:子域名到 的本地 ipfoo-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
}