针对 CentOS 系统,配置 SSL 证书在 Nginx 上的步骤:

1. 安装 Nginx 和 SSL 依赖

安装 EPEL 仓库(如果尚未安装)
sudo yum install epel-release -y
安装 Nginx
sudo yum install nginx -y
安装 OpenSSL(如果没有安装)
sudo yum install openssl -y

2. 上传 SSL 证书和私钥

假设你已经有了 SSL 证书文件(your_domain.crt)和私钥文件(your_domain.key),将它们上传到服务器。

例如,你可以将证书文件和私钥文件上传到 /etc/nginx/ssl/ 目录下:

sudo mkdir -p /etc/nginx/ssl
sudo cp your_domain.crt /etc/nginx/ssl/
sudo cp your_domain.key /etc/nginx/ssl/

确保文件权限正确,避免私钥文件泄露:

sudo chmod 600 /etc/nginx/ssl/your_domain.key

3. 配置 Nginx 使用 SSL

编辑 Nginx 配置文件

打开 Nginx 的默认配置文件(通常是 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/default.conf,具体路径取决于你的 Nginx 配置):

sudo vi /etc/nginx/nginx.conf
配置 SSL 相关内容

在文件中添加或修改 server 块:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    # Redirect HTTP to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your_domain.com www.your_domain.com;

    # SSL certificate and key
    ssl_certificate /etc/nginx/ssl/your_domain.crt;
    ssl_certificate_key /etc/nginx/ssl/your_domain.key;

    # Optional SSL settings for better security
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    # Other configurations
    root /usr/share/nginx/html;
    index index.html index.htm;

    # Location block for handling requests
    location / {
        try_files $uri $uri/ =404;
    }
}

4. 测试和重载 Nginx 配置

配置完成后,先检查配置文件是否有语法错误:

sudo nginx -t

如果一切正常,重载 Nginx 服务使配置生效:

sudo systemctl reload nginx

如果nginx尚未启动则需要先启动nginx

sudo systemctl start nginx

查看nginx状态

sudo systemctl status nginx

5. 防火墙设置

确保防火墙允许 HTTPS 流量。如果你正在使用 firewalld,你可以使用以下命令:

sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

如果你使用的是 iptables,需要手动允许 443 端口。

6. 验证 SSL 配置

打开浏览器,访问 https://your_domain.com 检查 SSL 是否成功启用。


其他Tips:

1.云服务器的防火墙都在控制台的防火墙配置规则,不需要在服务器中配置;

2.root和index可以在server块中配置,location会默认继承server块中的这个属性;location也可以配置root和index来覆盖server中的配置;

3.80端口配置了301永久重定向到https,后续的配置都在443里面配置就可以;

4.现在的网站都建议使用https,哪怕是静态资源也建议使用https,不要自己yy什么http开销更低之类的,虽然 HTTPS 会带来一定的性能开销,但现代的协议(如 HTTP/2 和 TLS 1.3)和硬件加速已显著减少这种差距。因此,性能影响不大,且通过 HTTPS 可以获得 HTTP/2 带来的性能提升。

5.配置完成后,如果你的域名也解析正常,应该是可以访问成功的,nginx自带有index.html。

6.分享记录一个好网站Dynamic Dummy Image Generator - DummyImage.com,平时用来做一些简单的占位图非常方便。

更多推荐