服务器上怎么安装虚拟主机,Nginx私有证书安装怎么做

在Nginx服务器上安装虚拟主机和私有证书,核心流程是:先通过server块配置虚拟主机,再生成或获取SSL证书,最后在server块中指定证书路径并强制HTTPS跳转。这套操作在个人服务器和中小企业业务中非常常见,配置难度不算高,但细节容易出错,下面按照实际部署顺序,把每一步拆开讲清楚。

虚拟主机在Nginx里的本质是什么

Nginx的虚拟主机,本质上就是配置文件里的server块,每个server块监听一个端口、绑定一个域名,并指定对应的站点根目录,服务器上创建多个虚拟主机,就是写多个server块,让一台Nginx同时服务多个网站。

Nginx实战 - 配置HTTPS | 数字证书和私钥 | Docker Compose容器
加载中
Nginx实战 - 配置HTTPS | 数字证书和私钥 | Docker Compose容器

配置虚拟主机的常规路径是:

  • 主配置文件:/etc/nginx/nginx.conf
  • 子配置文件目录:/etc/nginx/conf.d/ 或 /etc/nginx/sites-available/

大多数Linux发行版都支持在conf.d目录下按域名拆分配置文件,比如/etc/nginx/conf.d/example.com.conf,这样做的好处是,后续修改或删除某个站点,不影响其他配置。

Nginx服务器上怎么安装虚拟主机:分步实操

第一步:确认Nginx已安装并运行

先检查环境:

nginx -v
systemctl status nginx

如果尚未安装,在Ubuntu/Debian上执行:

sudo apt update
sudo apt install nginx -y

CentOS/RHEL系列则用:

sudo yum install nginx -y

安装完成后启动服务并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

第二步:创建站点目录和测试文件

每个虚拟主机要有独立的根目录,以/var/www/example.com为例:

sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>Hello from example.com</h1>" > /var/www/example.com/index.html

目录权限建议设置为755,文件权限为644,避免Nginx因权限不足返回403。

第三步:编写虚拟主机配置文件

在/etc/nginx/conf.d/下新建example.com.conf:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
    location / {
        try_files $uri $uri/ =404;
    }
}

这段配置的含义是:监听80端口,当请求的域名是example.com或www.example.com时,将请求映射到/var/www/example.com目录。

第四步:测试配置并重载Nginx

写完后先检查语法:

sudo nginx -t

如果输出syntax is ok和test is successful,重载配置:

sudo systemctl reload nginx

此时在浏览器访问http://example.com,如果能看到测试页面,说明虚拟主机已经生效。

第五步:添加更多虚拟主机

复制同样的步骤,创建第二个配置文件another-site.conf,修改server_name和root即可,一台Nginx可以承载几十个虚拟主机,只要服务器资源够用。

在Nginx服务器上安装私有证书的完整流程

私有证书通常指自签名SSL证书或内网使用的私有CA签发的证书,简米云服务器和酷番云服务器上的操作基本一致,区别只在安全组或防火墙是否放行443端口。

第一步:生成自签名证书

使用OpenSSL生成私钥和证书:

sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/nginx/ssl/example.com.key \
    -out /etc/nginx/ssl/example.com.crt

执行过程中会提示输入国家、省份、组织等信息,其中Common Name要填域名或IP地址。-nodes参数表示不加密私钥,这样Nginx启动时不需要手动输入密码,如果需要更长的有效期,可以把-days 365改成-days 3650,业内专家指出,私有证书的有效期不宜超过两年,内网环境可以适当放宽,但公网业务强烈建议使用受信任的CA证书。

第二步:修改虚拟主机配置以支持HTTPS

在原配置文件example.com.conf中新增一个443端口的server块:

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    root /var/www/example.com;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

同时添加一个80端口的跳转规则,把HTTP请求强制转到HTTPS:

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

行业共识认为,强制HTTPS跳转是部署SSL证书后的必要步骤,否则用户仍可能通过明文HTTP访问,证书形同虚设。

第三步:放行防火墙和安全组

本机防火墙需要放行443端口:

sudo ufw allow 443/tcp

如果是在简米云服务器或酷番云服务器上,还要在云控制台的安全组规则中添加入方向TCP 443端口,这一步经常被忽略,导致证书配置正确但外部无法访问。

第四步:重载Nginx并验证

sudo nginx -t
sudo systemctl reload nginx

验证方式:

curl -I https://example.com

或者用浏览器访问,地址栏会出现锁形图标(自签名证书会提示不受信任,这是正常现象,因为浏览器不认私有CA),想要彻底消除浏览器警告,需要把自签名的CA证书导入到操作系统的信任库中,这在企业内部可以通过组策略批量下发。

私有证书和公网证书的区别,怎么选

证书类型 适用场景 浏览器信任 成本
自签名证书 内网测试、开发环境 不信任,需手动导入 免费
私有CA签发的证书 企业内部系统、局域网应用 导入CA后信任 视内部CA建设成本而定
公网CA证书(如Let’s Encrypt) 公网网站、小程序后端 全信任 免费或数百元/年

如果只是本地联调或内网服务,自签名证书完全够用,但涉及公网用户访问、小程序接口、App支付回调等场景,还是建议用Let’s Encrypt或云厂商提供的免费证书,需要注意,自签名证书的私钥如果泄露,攻击者可以伪造证书实施中间人攻击,内网环境也不能掉以轻心。

常见报错和排查思路

部署过程中容易遇到以下几类问题,对应的排查方向如下:

  • Nginx启动失败,报错ssl_certificate不存在:检查证书文件路径是否写错,确认Nginx用户(通常是www-data或nginx)对证书文件有读取权限。
  • 访问HTTPS站点提示”连接不安全”:自签名证书的预期行为,检查证书的Common Name是否和访问域名一致。
  • HTTP能访问,HTTPS超时:大概率是安全组或防火墙没有放行443端口,用telnet 域名 443测试连通性。
  • 配置了多个server块,但访问时总是跳到同一个站点:检查server_name是否重复,如果两个server块监听了同一个端口且server_name相同,Nginx会使用先加载的那个配置,多数情况下,这类问题源于配置文件里存在语法错误或重复的默认server块。

关于Nginx配置虚拟主机和SSL证书,常见问题解答

Nginx服务器上怎么安装虚拟主机但不影响现有站点?

只要新虚拟主机的server_name不与其他站点冲突,在conf.d目录下新增独立的配置文件,nginx -t检查通过后reload即可,Nginx的reload是平滑重载,不会中断现有请求。

自己生成私有证书后,浏览器仍然提示不安全,是否说明配置失败了?

不是,自签名证书和私有CA签发的证书天然不被浏览器信任,这是客户端侧的机制,配置本身可能已经成功,用openssl s_client -connect 域名:443可以看到证书链信息,如果确认证书链完整且服务端配置正确,只需将自签名证书导入客户端信任库即可消除警告。

一台Nginx服务器上可以同时配置虚拟主机和多个私有证书吗?

可以,Nginx支持SNI(Server Name Indication),每个server块可以指定不同的ssl_certificate和ssl_certificate_key,只要各自的server_name不同即可,注意Nginx版本不低于1.11.0时SNI支持比较完善,老版本可能会有兼容性问题。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/558777.html

赞 (0)
上一篇 2026年8月9日 12:45
下一篇 2026年8月9日 12:46

相关推荐

  • 酷番云CDN加速方案好用吗?国内CDN加速哪家强

    【酷番云CDN加速方案】在全球数字化浪潮中,网站加载速度直接决定了用户的留存率与转化率,对于企业而言,构建一个稳定、高效且具备高扩展性的内容分发网络(CDN),不仅是技术架构的基石,更是提升品牌竞争力的关键,本文将对酷番云CDN加速方案进行深度测评,从底层架构、节点覆盖、安全防护及性价比等多个维度,剖析其在当前……

    2026年7月5日
    7900
  • linux消息队列是什么?linux消息队列有哪些常用命令

    关于linux的消息队列在构建高并发、微服务架构的分布式系统时,消息队列(Message Queue, MQ) 已成为不可或缺的基础中间件,对于运行在 Linux 环境下的服务器而言,选择一款高性能、高可用且易于集成的消息队列方案,直接决定了系统的吞吐量、延迟表现以及数据一致性能力,本文将深入剖析当前主流 Li……

    2026年6月14日
    2900
  • 服务器连通性和应用服务器管理如何优化,有哪些技巧?

    当应用服务器管理中出现网络层通、端口层通、应用层却报错的情况,核心结论是:服务器连通性不等于应用可用性,排查重心必须从网络连通逐步迁移到应用服务自身状态,服务器连通性故障排查第一步:分清三层连通性很多运维同行一遇到服务器连不上,下意识就是一通ping,ping不通就怀疑机房断网,ping通了就觉得万事大吉,这种……

    2026年8月21日
    1500
  • javascript开发游戏难吗?javascript开发游戏教程

    JavaScript开发游戏已成为当下网页游戏与轻量级移动游戏开发的首选技术路径,其核心优势在于跨平台能力强大、开发周期短、生态资源丰富,JavaScript引擎性能的飞跃式提升,彻底打破了早期脚本语言不适合处理复杂图形渲染的刻板印象,使得利用Web技术构建高性能游戏成为现实,通过合理的架构设计与技术选型,开发……

    2026年3月27日
    9700
  • 机房硬件防火墙对机房管理有何影响,如何优化

    机房硬件防火墙是机房安全管理的核心物理防线,其选型与配置策略直接决定网络抗攻击能力与业务连续性,必须从品牌性能、场景匹配和日常运维三个维度综合考量,机房硬件防火墙选型:品牌对比与价格因素选型阶段最常遇到两个问题:品牌怎么挑,预算怎么定,不同品牌的产品规划、策略语言和生态集成差异明显,不能只看参数表,主流品牌对比……

    2026年8月5日
    2800
  • 如何管理多个数据库的网站内容?多数据库网站内容管理系统推荐

    在数字化转型的深水区,数据库不再仅仅是数据的存储仓库,而是企业核心竞争力的引擎,选择一款稳定、高效且具备高性价比的数据库服务,对于初创团队、中小企业乃至大型互联网平台而言,都是关乎业务连续性与成本控制的关键决策,本文将基于真实的测试环境,对市面上几款主流的数据库服务进行深度测评,并结合2026年的最新市场动态……

    2026年6月12日
    3700
  • SAP CRM开发怎么做?SAP CRM开发教程

    SAP CRM开发的核心价值在于通过技术手段实现业务流程的数字化固化与灵活性扩展,其本质是将企业的市场营销、销售管理及服务支持等核心业务逻辑映射到系统中,从而提升运营效率与客户满意度,成功的开发实施并非单纯的代码编写,而是业务需求与技术架构的深度融合,必须遵循严谨的架构设计原则与标准化的开发规范,以确保系统在高……

    2026年3月16日
    12400
  • 级联数据库中的级联选择如何实现,注意事项有哪些?

    级联数据库中的级联选择,本质上是通过外键约束定义父子表联动规则,核心在于根据业务场景在CASCADE、SET NULL、RESTRICT等策略中做出合理选择,以确保数据一致性与操作效率,所谓级联选择,指的是在数据库设计层面,当父表记录发生更新或删除时,子表数据如何自动响应,这一机制由外键约束中的级联规则控制,是……

    2026年7月30日
    700
  • 如何开发Java自定义注解?实战指南详解步骤与应用

    Java注解本质是为代码添加结构化元数据的标记机制,它不直接影响程序逻辑,但能提供用于编译检查、运行时处理或生成额外代码的关键信息,其核心价值在于通过声明式配置提升代码可读性、减少样板代码并增强框架的灵活性,Java注解的本质与核心原理元数据载体注解本身是java.lang.annotation.Annotat……

    2026年2月13日
    11700
  • 昆明微商城开发多少钱?昆明微商城开发公司哪家好

    在昆明,企业开展微商城开发已从“可选项”变为“必选项”——2023年昆明本地商户微信生态交易额同比增长47%,但仅有23%的商家拥有自研微商城系统,昆明微商城开发的核心价值在于:低成本接入本地流量池、精准触达1500万云南微信用户、实现“线上下单+线下自提/配送”一体化闭环,以下从四大维度展开专业解析,为什么昆……

    2026年4月14日
    7100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注