我为静态内容运行nginx,并作为服务django的Apache / mod_wsgi的代理。我有example.com和test.example.com作为Apache / Django和static.example.com的代理,它直接通过nginx提供所有静态文件。我有一个通配符SSL证书,因此每个子域都可以使用SSL(我只有一个IP)。
为什么在 test.example.com 或 example.com中使用listen 443 default_server ssl;
时,SSL适用于两者但我必须明确地监听对于static.example.com来说是443吗?
ssl_certificate /etc/ssl/certs/example.chained.crt;
ssl_certificate_key /etc/ssl/private/example.key;
server {
listen 80;
listen 443;
server_name static.example.com;
# ... serves content ...
}
server {
listen 80;
listen 443 default_server ssl;
server_name example.com;
# ... proxy pass to http://example.com:8080 (apache) ...
}
server {
listen 80;
# why don't I need `listen 443;` here?
server_name test.example.com;
# ... proxy pass to http://test.example.com:8080 (apache) ...
}
答案 0 :(得分:3)
SSL协议本身(没有SNI扩展名)使用服务器的IP地址来请求SSL证书。使用SNI它还会传递主机名(不适用于Win XP),但这不应该与此相关。
服务器指令不完全匹配。这是“最接近”的比赛。它可能看起来“有效”,但可能最终出现在错误的服务器指令中。没有任何更多信息,比如服务器根目录,很难说清楚。
由于您似乎使用单个IP地址,因此这一点始终有效。