技术文档

nginx https 多个证书

时间 : 2024-11-13 04:20:02浏览量 : 5

Nginx 是一款高性能的 Web 服务器和反向代理服务器,它支持 HTTPS 协议,并可以配置多个证书来满足不同的安全需求。在本文中,我们将详细介绍如何在 Nginx 中配置多个 HTTPS 证书,并提供相关的代码示例。

## 一、为什么需要多个 HTTPS 证书

在实际的网站部署中,可能会遇到以下情况需要使用多个 HTTPS 证书:

1. 不同的域名:如果你的网站有多个域名,例如 `www.example.com` 和 `example.com`,每个域名都需要单独的 HTTPS 证书。

2. 不同的子域名:对于大型网站,可能会有多个子域名,如 `blog.example.com`、`store.example.com` 等,每个子域名也需要独立的证书。

3. 不同的证书类型:根据不同的安全需求,你可能需要使用不同类型的证书,如 DV(域名验证)证书、OV(组织验证)证书或 EV(扩展验证)证书。

## 二、Nginx 配置多个 HTTPS 证书的步骤

1. 准备证书文件:你需要准备好每个域名或子域名的证书文件,包括证书(.crt 或.pem 文件)和私钥(.key 文件)。确保这些文件的路径正确且可访问。

2. 编辑 Nginx 配置文件:打开 Nginx 的配置文件,通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/conf.d/default.conf`。在 `http` 块内添加以下代码:

```nginx

server {

listen 443 ssl;

server_name www.example.com example.com;

ssl_certificate /path/to/certificate1.crt;

ssl_certificate_key /path/to/privatekey1.key;

# 可以添加多个 ssl_certificate 和 ssl_certificate_key 指令,用于配置多个证书

ssl_certificate /path/to/certificate2.crt;

ssl_certificate_key /path/to/privatekey2.key;

# 其他服务器配置...

}

```

在上述代码中,`listen 443 ssl` 指定了监听的端口为 443(HTTPS 端口),并启用了 SSL 加密。`server_name` 指令指定了要使用该证书的域名,可以添加多个域名。`ssl_certificate` 和 `ssl_certificate_key` 指令分别指定了证书文件和私钥文件的路径。你可以根据需要添加多个 `ssl_certificate` 和 `ssl_certificate_key` 指令来配置多个证书。

3. 重新加载 Nginx 配置:保存配置文件后,使用以下命令重新加载 Nginx 配置:

```

sudo nginx -s reload

```

这将使 Nginx 重新读取配置文件并应用新的配置。

## 三、示例代码

以下是一个完整的 Nginx 配置示例,用于配置两个 HTTPS 证书:

```nginx

http {

# 其他配置...

server {

listen 443 ssl;

server_name www.example.com example.com;

ssl_certificate /etc/nginx/ssl/certificate1.crt;

ssl_certificate_key /etc/nginx/ssl/privatekey1.key;

ssl_certificate /etc/nginx/ssl/certificate2.crt;

ssl_certificate_key /etc/nginx/ssl/privatekey2.key;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers on;

location / {

# 代理配置或其他请求处理逻辑

}

}

# 其他服务器块...

}

```

在上述示例中,配置了两个域名 `www.example.com` 和 `example.com`,并分别使用了不同的证书文件。`ssl_protocols`、`ssl_ciphers` 和 `ssl_prefer_server_ciphers` 指令用于设置 SSL 协议、加密套件和首选服务器密码套件,以提高安全性。

## 四、注意事项

1. 确保证书文件的路径正确,并且 Nginx 进程具有读取证书文件的权限。

2. 按照证书颁发机构的要求,定期更新证书,以确保网站的安全性。

3. 在配置多个证书时,要注意证书的顺序和优先级。通常,先配置的证书将被优先使用。

4. 测试配置是否正确:在重新加载 Nginx 配置后,使用浏览器访问你的网站,确保 HTTPS 连接正常工作,并显示正确的证书信息。

通过以上步骤,你可以在 Nginx 中配置多个 HTTPS 证书,满足不同域名或子域名的安全需求。配置多个证书可以提高网站的安全性,并增强用户对网站的信任。记得定期更新证书,并注意证书的管理和维护,以确保网站的持续安全。