首先更新系统并安装必要的工具:
sudo yum update -y
sudo yum install epel-release -y
然后安装 Nginx:
sudo yum install nginx -y
启动 Nginx 并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
验证 Nginx 是否正常运行:
sudo systemctl status nginx
如果防火墙开启,需要开放 HTTP 和 HTTPS 端口:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
你可以使用 Let's Encrypt 免费证书或购买商业证书。这里以 Let's Encrypt 为例:
安装 certbot:
sudo yum install certbot python2-certbot-nginx -y
获取证书(将 example.com 替换为你的域名):
sudo certbot --nginx -d example.com -d www.example.com
按照提示操作,certbot 会自动配置 Nginx。
将你的证书文件(.crt 和 .key)上传到服务器,例如:
/etc/ssl/certs/example.com.crt
/etc/ssl/private/example.com.key
编辑 Nginx 配置文件:
sudo vi /etc/nginx/conf.d/example.com.conf
添加以下内容(根据实际情况修改):
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
# 优化 SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 其他配置
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 启用 HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
测试 Nginx 配置:
sudo nginx -t
如果测试通过,重新加载 Nginx:
sudo systemctl reload nginx
如果是使用 Let's Encrypt,设置自动续订:
sudo crontab -e
添加以下行(每天凌晨 2:30 检查并续订):
30 2 * * * /usr/bin/certbot renew --quiet
访问你的网站,确保: 1. HTTP 自动跳转到 HTTPS 2. 浏览器地址栏显示安全锁标志 3. 可以使用 SSL Labs 测试工具 检查 SSL 配置
端口冲突:确保 80 和 443 端口没有被其他服务占用
sudo netstat -tulnp | grep -E '80|443'
权限问题:确保证书文件有正确的权限
sudo chmod 600 /etc/ssl/private/example.com.key
SELinux 问题:如果遇到权限问题,可以临时禁用 SELinux 测试
sudo setenforce 0
证书过期:定期检查证书有效期
sudo openssl x509 -noout -dates -in /etc/letsencrypt/live/example.com/cert.pem
按照以上步骤,你应该能够在 CentOS 7.3 上成功安装 Nginx 并配置 HTTPS。