nginx双域名双证书配置

版本信息

版本号变更内容作者时间
1.0.0- 初始版本;Jisen2021.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;
			}
		}
}

要在Nginx配置中实现微服务的域名活(Active-Active)部署,您可以使用Nginx的负载均衡功能和域名解析来实现。以下是一个示例配置: ``` http { upstream backend_servers { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name yourdomain.com; location / { resolver 8.8.8.8; # 域名解析服务器地址 set $backend_servers ''; if ($http_host = 'yourdomain.com') { set $backend_servers $backend_servers backend1.example.com; } if ($http_host = 'anotherdomain.com') { set $backend_servers $backend_servers backend2.example.com; } proxy_pass http://$backend_servers; proxy_set_header Host $host; } } } ``` 在上面的配置中,`backend1.example.com`和`backend2.example.com`是您的微服务后端服务器的地址。`upstream`指令定义了这些后端服务器的集群。 在`location /`块中,我们使用`resolver`指令指定了一个域名解析服务器(例如Google DNS)来解析域名。根据请求的`$http_host`(即请求的域名),我们使用条件语句来设置`$backend_servers`变量的值。根据不同的域名,我们将不同的后端服务器添加到`$backend_servers`变量中。 最后,通过`proxy_pass http://$backend_servers;`将请求代理到后端服务器集群,`proxy_set_header Host $host;`将原始请求的主机头信息传递给后端服务器。 通过这样的配置Nginx将根据请求的域名将请求分发到不同的后端服务器上,实现微服务的域名活部署。 请根据您的实际需求和环境进行适当的配置调整,例如添加SSL证书、调整负载均衡算法等。 确保在修改Nginx配置文件之前备份原始配置,并在修改后重新加载Nginx配置以使更改生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值