Назад | Перейти на главную страницу

HTTP-запросы прокси к серверам на разных портах, используя поддомен

Скажем, у меня есть минималистичный веб-сервер Python, работающий с несколькими экземплярами, каждый с разными портами, указанными в качестве аргументов командной строки.

Я бы хотел, чтобы запросы к моему серверу перенаправлялись следующим образом, используя заголовок Host:

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

Лучше ли это сделать с таким сервером, как Lighttpd, и выполнить некоторую настройку виртуального хоста - возможно ли это?

Я бы предпочел не использовать что-то тяжелое, например Apache.

Спасибо!

С участием 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;
    }
}