如何解决多域的nginx HTTPS直通[证书中带有通配符aletrnate_names]
我有以下问题:
我有几个在Docker容器中运行的HTTPS服务。我还设置了一个nginx容器,以便将URL重定向到相关的容器。相应容器中的每个https服务都使用带有通配符dns的证书。就我而言:
[ alternate_names ]
DNS.1 = *.myapps.local
我已将nginx配置为不终止SSL连接,而是将其传递到后端服务器:
redirect_http.conf
Redirect any http request on port 80 to https
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
passthrough.stream
# https://gerco.dev/NGINX-Reverse-Proxy-with-TLS-Passthrough/
map $ssl_preread_server_name $name {
test1.myapps.local server1_https;
test2.myapps.local server2_https;
default $ssl_preread_server_name;
}
upstream server1_https {
server service1:443; //---------> Since I've linked the containers in the compose file,this is valid
}
upstream server2_https {
server service2:443; //---------> Since I've linked the containers in the compose file,this is valid
}
server {
listen 443;
listen [::]:443;
ssl_preread on;
proxy_ssl_server_name on;
# proxy_ssl_session_reuse off;
proxy_pass $name;
}
我已经按如下所示设置了 / etc / hosts 文件:
192.168.1.50 test1.myapp.local test2.myapp.local
问题在于:
当我访问test1.myapp.local-> service1的页面被渲染。 当我访问test2.myapp.local-> service1的页面 STILL 时呈现。
我在同一IP中托管2个子域。而且每次,无论我访问两个URL中的哪个URL,我总是以第一个服务结束。
我该如何解决?我的理解是$ssl_preread_server_name
应该告诉我我要访问的域?我是在证书中使用通配符alertnate_name来怪吗?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。