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 是否可以成功访问。

相关推荐
郝学胜-神的一滴3 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
技术路上的探险家3 小时前
Ubuntu下Docker与NVIDIA Container Toolkit完整安装教程(含国内源适配)
linux·ubuntu·docker
Doro再努力4 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
全栈工程师修炼指南4 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
Lsir10110_4 小时前
【Linux】进程信号(上半)
linux·运维·服务器
开开心心就好4 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
无证驾驶梁嗖嗖5 小时前
用Plex打造随身私人影院告别影音杂乱,必须加上cpolar突破地域限制!
ubuntu
鹏北海5 小时前
micro-app 微前端项目部署指南
前端·nginx·微服务
css趣多多5 小时前
add组件增删改的表单处理
java·服务器·前端
Sheep Shaun5 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区