【发布时间】:2018-10-11 18:53:37
【问题描述】:
我正试图让我的 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;
}
}
问题是无论如何,这总是会产生一个糟糕的网关错误。我已经尝试了一些变体并移动了一些东西,有和没有通配符 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
【问题讨论】:
标签: nginx nginx-location nginx-reverse-proxy