使用子域将 HTTP 请求代理到不同端口上的服务器

Luk*_*ley 5 http web-hosting web-server subdomain

假设我有一个运行多个实例的极简 Python Web 服务器,每个实例都有指定为命令行参数的不同端口。

我希望使用 Host 标头像这样重定向对我的服务器的请求:

name1.mydomain.com -> localhost:8000
name2.mydomain.com -> localhost:8001
name3.mydomain.com -> localhost:8002
Run Code Online (Sandbox Code Playgroud)

这是最好用像 Lighttpd 这样的服务器并做一些虚拟主机配置来完成的 - 这可能吗?

我不想使用像 Apache 这样重量级的东西。

谢谢!

Ale*_*exD 5

对于nginx,您可以使用如下所示的内容:

server {
  server_name name1.domain.com;
  location / {
    proxy_pass http://localhost:8000;
  }
}

server {
  server_name name2.domain.com;
  location / {
    proxy_pass http://localhost:8001;
  }
}

server {
  server_name name3.domain.com;
  location / {
    proxy_pass http://localhost:8002;
  }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,还有另一种方法可以使用map指令达到相同的效果:

map $http_host  $port {
    hostnames;

    default               8000;
    name1.example.com     8000;
    name2.example.com     8001;
    name3.example.com     8002;
}

server {
    listen       80;
    server_name ~^name\d.example.com;
    location / {
        proxy_pass http://127.0.0.1:$port;
    }
}
Run Code Online (Sandbox Code Playgroud)