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

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

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

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

name1.mydomain.com -> localhost:8000
name2.mydomain.com -> localhost:8001
name3.mydomain.com -> localhost:8002

最好使用像 Lighttpd 这样的服务器并进行一些虚拟主机配置来完成这项工作吗 - 这可能吗?

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

谢谢!

答案1

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;
  }
}

顺便说一句,还有另一种方法可以达到同样的效果地图指示:

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;
    }
}

相关内容