版本信息
版本号 | 变更内容 | 作者 | 时间 |
---|---|---|---|
1.0.0 | - 初始版本; | Jisen | 2021.06.29 |
nginx简介
nginx因为反向代理和作为静态资源容器在服务器中广泛应用;同一个服务器中部署多个应用,如果摒弃端口方式访问,ngixn可通过一定的路径匹配规则,使用80端口反向代理多个应用,这样只需要 “域名/路径” 就可以访问多个应用。
问题描述
在项目实践中,假如有两个域名需要解析到同一台服务器上,且都要支持https访问。普通的单域名证书只支持一个域名,两个域名则要使用两个证书。ngixn是否支持配置两套域名的证书?答案是显然的。
双域名双证书实践
如下代码将两个 server 443 目录在ngixn配置文件中并列配置。
#配置1
server {
listen 443 ssl;
#域名1
server_name www.freqmesh.com;
#ssl on;#证书1
ssl_certificate /usr/share/nginx/html/static-resource/Aliyuncert/5160019_www.freqmesh.com.pem;
ssl_certificate_key /usr/share/nginx/html/static-resource/Aliyuncert/5160019_www.freqmesh.com.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
#配置2
server {
listen 443 ssl;
#域名1
server_name www.parkinggogo.com;
#ssl on;#证书2
ssl_certificate /usr/share/nginx/html/static-resource/Aliyuncert/5559752_www.parkinggogo.com.pem;
ssl_certificate_key /usr/share/nginx/html/static-resource/Aliyuncert/5559752_www.parkinggogo.com.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- 注意点
这其中,ngixn会根据访问的域名去匹配不同的server_name,所以第一个要注意的就是server_name 不能填写ip或者localhost。不同的域名会进入到不同的server_name配置规则下,采用不同的证书。
特定路径开启证书
有没有特定路径开启证书的需求?
location 目录下不能配置证书否则会报 nginx: [emerg] “ssl_verify_client” directive is not allowed here
错误
以下但是开启客户端验证证书配置
server{
ssl_client_certificate 用于验证客户端的证书的证书的路径;
ssl_verify_client optional;
ssl_verify_depth 5;
location ~ ^ /path {
if($ssl_client_verify != SUCCESS){
return 403;
break;
}
}
}