在CentOS系统上安装Nginx并配置SSL证书是搭建安全Web服务的常见需求,本文将详细介绍从安装Nginx到配置SSL证书的完整步骤,确保过程清晰易懂。

系统准备与更新
在开始安装前,确保系统处于最新状态,打开终端,执行以下命令更新系统包:
sudo yum update -y
更新完成后,安装必要的编译工具和依赖库,这些对后续安装Nginx至关重要:
sudo yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl-devel
这些工具包括GCC编译器、PCRE正则表达式库、ZLIB压缩库和OpenSSL开发库,它们是Nginx运行的核心依赖。
添加Nginx官方仓库
虽然CentOS默认仓库可能包含Nginx,但版本往往较旧,建议添加Nginx官方Yum仓库以获取最新版本,首先安装EPEL仓库:
sudo yum install -y epel-release
然后添加Nginx官方仓库:
sudo rpm -Uvh http://nginx.org/packages/centos/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
这一步确保后续安装的是Nginx的最新稳定版。
安装Nginx
完成仓库添加后,即可安装Nginx:
sudo yum install -y nginx
安装过程会自动处理依赖关系,完成后,启动Nginx服务并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
通过浏览器访问服务器的IP地址,若看到Nginx欢迎页面,说明安装成功。

配置防火墙规则
为确保Nginx能正常提供服务,需要开放HTTP(80)和HTTPS(443)端口,执行以下命令:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
这些命令将防火墙规则永久保存并立即生效,避免外部访问被阻止。
获取SSL证书
SSL证书是HTTPS加密连接的基础,可以选择Let’s Encrypt免费证书或商业证书,这里以Let’s Encrypt为例,安装Certbot工具:
sudo yum install -y certbot python2-certbot-nginx
使用Certbot自动申请并配置证书:
sudo certbot --nginx -d your_domain.com
将your_domain.com替换为实际域名,按照提示完成邮箱验证和条款同意后,Certbot会自动完成证书安装和Nginx配置。
手动配置SSL证书
若使用其他来源的证书,需手动配置Nginx,创建SSL配置文件:
sudo vi /etc/nginx/conf.d/ssl.conf
server {
listen 443 ssl;
server_name your_domain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
} 保存后检查Nginx配置语法:
sudo nginx -t
若显示successful,则重新加载Nginx:
sudo systemctl reload nginx
优化SSL配置
为进一步提升安全性,建议启用HTTP/2和HSTS,在SSL配置中添加:

listen 443 ssl http2; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
这些优化措施能提升网站性能和安全性。
常见问题排查
若无法访问HTTPS站点,可检查以下内容:
- 防火墙是否放行443端口;
- 证书路径是否正确;
- Nginx错误日志(
/var/log/nginx/error.log)是否有报错。
相关问答FAQs
Q1: 如何续签Let’s Encrypt证书?
A1: Let’s Encrypt证书有效期为90天,可通过以下命令自动续签:
sudo certbot renew --dry-run
若测试通过,添加定时任务每月执行一次:
echo "0 0 1 * * /usr/bin/certbot renew --quiet" | sudo crontab -
Q2: 配置SSL后HTTP访问自动跳转HTTPS的方法?
A2: 在Nginx配置文件中添加以下server段:
server {
listen 80;
server_name your_domain.com;
return 301 https://$host$request_uri;
} 保存后重新加载Nginx即可实现自动跳转。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复