Скажем, у меня есть минималистичный веб-сервер 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;
}
}