当前位置:首页 > 行业资讯 > SSL证书 > 正文内容

Nginx配置多个SSL证书实现多域名安全通信的完整指南

2025-10-02SSL证书140

海外云服务器 40个地区可选            亚太云服务器 香港 日本 韩国

云虚拟主机 个人和企业网站的理想选择            俄罗斯电商外贸虚拟主机 赠送SSL证书

美国云虚拟主机 助力出海企业低成本上云             WAF网站防火墙 为您的业务网站保驾护航


随着现代 Web 应用架构的演进,单台服务器托管多个网站已成为常态,尤其在业务规模不断扩展的背景下,一台 Nginx 服务器往往需要同时支持多个独立域名或子域名(如 example.comblog.example.comshop.anotherdomain.com),而每个站点都应启用 HTTPS 加密通信以保障用户数据安全,这就要求我们能够在同一台 Nginx 实例上为不同域名配置各自的 SSL/TLS 证书。

本文将系统讲解如何在 Nginx 中高效配置多个 SSL 证书,涵盖从证书申请、文件管理到虚拟主机配置、自动化维护及安全加固的全流程,帮助运维人员构建稳定、安全且易于维护的多站点 HTTPS 架构。


为什么需要为多个域名配置独立的 SSL 证书?

HTTPS 不再是“高级选项”,而是现代网站部署的基本标准,SSL/TLS 协议通过加密客户端与服务器之间的传输数据,有效防止中间人攻击、会话劫持和敏感信息泄露。

当一台服务器承载多个不同域名时,通常每个域名都需要拥有独立的 SSL 证书,虽然通配符证书(Wildcard Certificate)可以覆盖某个主域名下的所有一级子域名(*.example.com),但它无法跨域使用——对于完全不相关的域名(如 anotherdomain.com),仍需单独配置证书。

采用多证书策略的优势包括:

  • 更高的安全性隔离
    各域名使用独立证书,一旦某一张证书被泄露或吊销,不会波及其他站点,降低连锁风险。

  • 灵活的生命周期管理
    每个证书可独立更新、续期或撤销,便于按项目或团队进行权限划分和运维操作。

  • 充分利用 SNI 技术
    现代浏览器普遍支持 服务器名称指示(Server Name Indication, SNI) 扩展,允许在同一 IP 地址和端口上绑定多个 SSL 证书,极大提升了资源利用率。

⚠️ 注意:SNI 虽已广泛支持,但极少数老旧设备(如 Windows XP 上的 IE6)可能无法识别,生产环境若需兼容此类客户端,建议分配独立公网 IP。


准备工作:获取并组织 SSL 证书

在开始 Nginx 配置前,必须为每个目标域名准备有效的 SSL 证书,常见获取方式如下:

方式 特点 适用场景
Let’s Encrypt 免费证书 自动化程度高,有效期 90 天,支持自动续签 生产环境首选,适合大多数中小型项目
商业 CA 签发证书(DigiCert、GeoTrust、Comodo 等) 更长有效期(1–2 年)、更高信任等级、支持企业验证(EV) 对品牌信任度要求高的大型平台
自签名证书 无需外部依赖,生成简单 仅限测试或内网开发环境,不适用于公开服务

示例:使用 Certbot 申请 Let’s Encrypt 证书

假设我们需要为两个域名申请证书:

# 为主站及其 www 子域名申请证书
sudo certbot certonly --nginx -d example.com -d www.example.com
# 为另一个独立博客站点申请证书
sudo certbot certonly --nginx -d blog.anotherdomain.com

执行成功后,证书将自动存储于以下路径:

  • /etc/letsencrypt/live/example.com/fullchain.pem —— 证书链
  • /etc/letsencrypt/live/example.com/privkey.pem —— 私钥文件

同理,blog.anotherdomain.com 的证书也位于对应目录下。

🔐 安全提示:私钥文件(privkey.pem)极其敏感,请确保其权限设置为 600,且仅 root 用户可读写:

chmod 600 /etc/letsencrypt/live/*/privkey.pem
chown root:root /etc/letsencrypt/live/*/privkey.pem

核心实现:Nginx 多域名 SSL 配置详解

Nginx 使用 server 块(虚拟主机) 来区分不同的网站请求,每个 server 可监听相同的端口(443),并通过 server_nameSSL_certificate 指令指定对应的域名与证书路径。

基本配置结构说明

Nginx 主配置文件通常位于 /etc/nginx/nginx.conf,但推荐将各个站点的配置拆分为独立文件,存放在 /etc/nginx/sites-available/ 目录中,并通过符号链接激活至 /etc/nginx/sites-enabled/

配置第一个域名(example.com)

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;
    # SSL 证书路径
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    # 推荐的安全协议与加密套件
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
    ssl_prefer_server_ciphers off;
    # 站点根目录与默认页面
    root /var/www/example;
    index index.html;
    # 请求处理规则
    location / {
        try_files $uri $uri/ =404;
    }
    # 启用访问与错误日志(便于排查)
    access_log /var/log/nginx/example.access.log;
    error_log /var/log/nginx/example.error.log;
}

添加第二个域名(blog.anotherdomain.com)

server {
    listen 443 ssl http2;
    server_name blog.anotherdomain.com;
    ssl_certificate /etc/letsencrypt/live/blog.anotherdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blog.anotherdomain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
    ssl_prefer_server_ciphers off;
    root /var/www/blog;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    # PHP-FPM 动态解析
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    access_log /var/log/nginx/blog.access.log;
    error_log /var/log/nginx/blog.error.log;
}

💡 提示:两个 server 块共享同一个 IP 和端口(443),依靠 SNI 在握手阶段判断客户端请求的是哪个域名,从而返回正确的证书。


强制 HTTP 跳转 HTTPS(提升安全性)

为了强制所有流量走加密通道,建议为每个域名配置一个监听 80 端口的 server 块,执行 301 永久重定向:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}
server {
    listen 80;
    server_name blog.anotherdomain.com;
    return 301 https://$host$request_uri;
}

此设计不仅提升安全性,也有利于 SEO——搜索引擎更青睐始终使用 HTTPS 的网站。


验证与测试流程

完成配置后,务必进行以下验证步骤,确保服务正常运行且符合安全规范。

检查 Nginx 配置语法

sudo nginx -t

输出应显示 syntax is oktest is successful,否则需检查配置中的拼写或路径错误。

重新加载 Nginx 服务

sudo systemctl reload nginx

避免使用 restart,以免造成短暂中断。

浏览器访问测试

分别打开:

  • https://example.com
  • https://blog.anotherdomain.com

确认页面正常加载,并观察浏览器地址栏是否显示锁形图标,点击可查看证书详情。

使用专业工具检测 SSL 安全等级

访问 [SSL Labs SSL Test](https://www.ssll

扫描二维码推送至手机访问。

版权声明:本文由特网科技发布,如需转载请注明出处。

本文链接:https://www.56dr.com/mation/79662.html

分享给朋友:

“Nginx配置多个SSL证书实现多域名安全通信的完整指南” 的相关文章

在家搭建小型服务器的步骤

在家中搭建小型服务器可以用于各种用途,如远程办公、数据备份、网络监控等。以下是一些基本步骤和建议:,,1. **选择合适的硬件**:需要选择一台性能良好的服务器,并确保其具有足够的内存(至少4GB以上)、CPU(至少2核)和存储空间。,,2. **安装操作系统**:根据需求选择合适的Linux发行版...

如何在实际操作中应用策略

策略与实践:在快速变化的商业环境中,有效运用策略和实践是关键。制定清晰的战略规划,确保企业方向正确;实施有效的执行机制,激励员工积极主动地推动战略落地;持续学习和调整,适应市场环境的变化;建立良好的团队合作氛围,鼓励创新思维和跨部门协作。通过这些策略与实践,企业可以提高竞争力,实现长期发展。在当今数...

理性消费指南

在做出选择时,应保持冷静,考虑多方面的因素,如价值、性价比、质量、信誉等。避免盲目跟风或冲动决策,以免造成不必要的损失。在当今数字化时代,越来越多的企业和个人需要通过网络进行业务运营,为了提高效率和降低成本,租用服务器已成为一种常见的选择,在选择租赁服务器时,价格成为了一个重要的考量因素,本文将对租...

国外服务器购买的网站推荐

国外服务器购买网站包括AWS、Azure和Google云等。它们提供了多种存储和计算资源,适合各种需求。这些平台也提供了安全性和数据保护机制,确保用户的数据安全。在当前互联网时代,随着科技的发展和经济全球化,越来越多的人选择在海外购买服务器来托管自己的网站,这种做法不仅能够提高网站的访问速度和稳定性...

如何选择_SSL证书?

SSL证书的价格因多种因素而异,包括域名、类型(例如自签名、标准、高级)、证书有效期和是否需要扩展。一般而言,一个顶级域名的免费SSL证书价格可能在几百元左右,但升级为更高级别或长期有效则会相应增加。一些企业还可能有特定的套餐或优惠活动,如购买多年合同或使用特定的工具。建议在选择SSL证书时,比较不...

SSL证书一年费用分析

SSL证书是一种用于加密网络通信的安全技术。其主要功能是确保数据在传输过程中不被未经授权的访问或篡改。为了评估SSL证书的成本和收益,我们需要考虑几个关键因素:使用成本、维护成本以及潜在的风险。,,### 使用成本,,1. **初始投资**:购买SSL证书需要支付一定的费用,包括证书本身的价格和相关...