Я пытаюсь сделать свой Nginx немного более сухим, так как он действует как обратный прокси почти для 20 серверов. Вот что я пытаюсь сделать, все имена хостов и прочее изменены/примеры:
map $http_host $backend {
baz.mydomain.com hostname1:8080;
foo.mydomain.com 192.168.1.10:8081;
bar.mydomain.com hostname2:1234;
ham.mydomain.com hostname2:5678;
}
server {
listen 443 ssl http2;
server_name .mydomain.com;
ssl_certificate /usr/share/nginx/certs/mydomain.com.pem;
ssl_certificate_key /usr/share/nginx/certs/mydomain.com.key;
location / {
proxy_redirect http:// https://;
proxy_pass http://$backend;
}
}
Проблема в том, что несмотря ни на что, это всегда будет выдавать ошибку bad gateway. Я пробовал несколько вариантов и перемещал вещи, с подстановочным знаком server_name и без него, с $host вместо $http_host, но пока не могу заставить его работать. Я даже иду об этом правильно? Я действительно предпочел бы не иметь почти 20 отдельных записей виртуальных серверов в моей конфигурации.
В документации nginx не так много помощи по использованию такой карты, и не так много в Интернете, за исключением одного очень старого сообщения, в котором кратко упоминается что-то подобное здесь: https://serverfault.com/questions/342309/how-to-write-a-dry-modular-nginx-conf-reverse-proxy-with-named-locations