server_name
为什么我的配置在指定时不会路由到特定的?
我的部分配置:
server
{
listen 443 ssl;
server_name foo-bar.example.com;
include includes/http/server/ssl.conf;
location /
{
#...
}
}
server
{
listen 80 default_server;
listen 162 default_server;
listen 443 default_server;
listen 465 default_server;
listen 3306 default_server;
listen 9200 default_server;
return 444;
}
但是,进入域foo-bar.example.com
会返回444
状态。当我删除最后一个块时,它按预期工作。
我试过添加:
server_name ""
server_name _
...在最后一个区块中没有成功。
本页定义的优先级:http://nginx.org/en/docs/http/server_names.html
- 确切名称
- 以星号开头的最长通配符名称,例如“*.example.org”
- 以星号结尾的最长通配符名称,例如“mail.*”
- 第一个匹配的正则表达式(按配置文件中出现的顺序)
...告诉我我所做的应该有效,在我看来。
答案1
当我查看位于error.log
的时/var/log/nginx/
,我发现no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking
因此添加一个新块:
server
{
listen 443 default_server;
include includes/http/server/ssl.conf;
return 444;
}
...在从前一个块中移除时listen 443 default_server
,成功了......
包括/http/server/ssl.conf
ssl_certificate /etc/ssl/certs/crt.crt;
ssl_certificate_key /etc/ssl/private/key.key;