Ubuntu Nginx 配置 SSL 证书

首先需要在 Ubuntu 中安装 Nginx 服务, 打开终端执行以下命令:

shell 复制代码
$ sudo apt update
$ sudo apt install nginx -y

然后启动 Nginx 服务并设置为开机时自动启动, 执行以下命令:

shell 复制代码
$ sudo systemctl start nginx
$ sudo systemctl enable nginx

最后再验证一下 Nginx 服务的当前状态, 执行以下命令:

shell 复制代码
$ sudo systemctl status nginx
$ sudo systemctl is-active nginx

下载证书

从云服务提供商处下载适用 NginxSSL 证书文件, 以腾讯云为例, 如果有一个 xxx.xxx 的域名, 下载到本地的文件夹名称为 xxx.xxx_nginx, 文件夹内包含下面四个证书文件:

  • xxx.xxx_bundle.crt
    • 根证书交叉文件
  • xxx.xxx_bundle.pem
    • 使用pem编码的证书文件
  • xxx.xxx.csr
    • 证书签名请求文件
  • xxx.xxx.key
    • 私钥公钥对文件

进入到 Nginx 服务的配置目录下, 创建一个 xxx.xxx_nginx 目录并进入该目录下, 然后以管理员身份下载证书文件:

shell 复制代码
$ cd /etc/nginx
$ sudo mkdir xxx.xxx_nginx
$ cd xxx.xxx_nginx
$ sudo [证书下载请求地址]

证书文件下载完成后可以通过 ls -l 查看一下刚刚下载好的证书文件。

配置代理

进入到 Nginx 配置目录下 conf.d 目录, 创建一个 xxx.xxx_nginx.conf 配置文件, 并开始编辑配置文件:

shell 复制代码
cd /etc/nginx/conf.d
sudo touch xxx.xxx_nginx.conf
sudo vim xxx.xxx_nginx.conf

假设 XXX 为当前服务的名称, 开始配置代码。

动态服务配置

bash 复制代码
upstream XXX {
    # 本地服务地址
    server 127.0.0.1:10086;
}

server {
    listen 80;
    server_name xxx.xxx;
    # 把 HTTP 的域名请求转成 HTTPS
    return 301 https://$host$request_uri;
}

server {
    # SSL 访问端口号为 443
    listen 443 ssl;
    # 填写绑定证书的域名
    server_name xxx.xxx;
    # 证书文件名称
    ssl_certificate xxx.xxx_nginx/xxx.xxx_bundle.crt;
    # 私钥文件名称
    ssl_certificate_key xxx.xxx_nginx/xxx.xxx.key;
    ssl_session_timeout 5m;
    # 请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    # 请按照以下套件配置, 配置加密套件, 写法遵循 openssl 标准
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        # 网站主页路径. 此路径仅供参考, 具体请您按照实际目录操作
        # 例如, 您的网站运行目录在/etc/www下, 则填写/etc/www
        # root html;
        # index  index.html index.htm;
        proxy_pass http://XXX;
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 最大允许上传 10~20000 MB 的内容
        client_max_body_size 10m;
    }
}

静态服务配置

bash 复制代码
server {
    # SSL 访问端口号为 443
    listen 443 ssl; 
    # 填写绑定证书的域名
    server_name xxx.xxx; 
    # 证书文件名称
    ssl_certificate xxx.xxx_nginx/xxx.xxx_bundle.crt;
    # 私钥文件名称
    ssl_certificate_key xxx.xxx_nginx/xxx.xxx.key;
    ssl_session_timeout 5m;
    # 请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3; 
    # 请按照以下套件配置,配置加密套件, 写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    location / {
        # 网站主页路径。此路径仅供参考, 具体请您按照实际目录操作。
        # 例如,您的网站运行目录在/etc/www下, 则填写/etc/www。
        root /.../.../.../app;
        index index.html;
    }
    location /static {
        alias /.../.../.../static;
    }
}

重启服务

为了使上面的配置生效, 需要检测配置文件的有效性, 并且重启 Nginx 服务:

shell 复制代码
$ sudo nginx -t
$ sudo nginx -s reload

最后就可以验证一下 https://xxx.xxx 是否可以成功访问。

相关推荐
LunarCod16 分钟前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
noravinsc1 小时前
国产化中间件 替换 nginx
运维·nginx·中间件
惜.己1 小时前
Linux常用命令(十四)
linux·运维·服务器
Think Spatial 空间思维2 小时前
【HTTPS基础概念与原理】对称加密与非对称加密在HTTPS中的协作
网络协议·http·https
BillKu2 小时前
服务器多JAR程序运行与管理指南
运维·服务器·jar
QQ2740287563 小时前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
ZHOU_WUYI3 小时前
使用 Docker 部署 React + Nginx 应用教程
nginx·react.js·docker
小疆智控4 小时前
数字化工厂升级引擎:Modbus TCP转Profinet网关助力打造柔性生产系统
服务器·网络·tcp/ip
南棱笑笑生4 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
XMYX-04 小时前
Linux du 命令终极指南:从基础到精通
linux·服务器