Virtualhost

OpenBSD:如何使用 relaydhttpd 重定向子域請求

  • April 8, 2018

情況

我在OpenBSD上創建了以下設置:

vm-伺服器結構

所以我讓我的 OpenBSD 伺服器192.168.1.250將所有 http-requests 重定向到host-vmon 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-request 到foo.hermes-technology.de這個請求會被重定向到host-vm.
  • 此後,根據子域的名稱host-vm將請求重定向到.foo-vm

問題

我只想依賴 OpenBSD 的基礎包,所以我的問題是:

如何將主機上的子域請求重定向httpd到其他本地 IP 地址,僅使用and實現與上述相同的結果relayd

更多資訊

如果您需要或想要有關此設置的更多資訊來回答我的問題,我會在此處記錄整個配置: blog.hermes-technology.de

關於中繼,我想類似的東西會達到你想要的:

這定義了您可以在其中找到 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
}

引用自:https://serverfault.com/questions/856807