项目部署08 阿里云https通过nginx部署子网站

173 阅读3分钟

01.前期准备

  1. 已经有一个域名,并将域名解析了对应的ip地址上
  2. 国内服务器域名解析需要申请备案,确认域名已经备案成功(周期7-15天左右)
  3. 有一个服务器
  4. 已经购买了ssl证书,并且主域名上已经配置了https。
    没有配置https的可以浏览笔者本专栏的上一篇文章,如果对https无需求可无视第4条

02.申请子域名证书

  1. 这里笔者还是以阿里云为例。进入阿里云控制台,选择云解析DNS业务模块 image.png

  2. 添加子域名
    第一步 image.png 第二步 image.png 第三步 image.png

03.申请并下载子域名ssl证书(没有https需求的话,可直接看第四步)

  1. 关于申请证书的填写
    证书绑定的域名:输入刚才确认的子域名
    其他选项: 系统默认即可。
    image.png 到了第下一步。通常情况下,阿里云已经帮你把第一步第二步做好了,你只需要点击以下第三步的验证按钮,确认下是否正常即可。没有问题的话点击提交审核image.png

  2. 下载ssl证书 等待审核通过后。因为我们部署用的是nginx,所以选择 nginx 的证书进行下载。 image.png

  3. 得到两个文件,一会需要上传到服务器上。 image.png

04.配置nginx

  1. 在/usr/local/nginx/conf/ssl/ 目录下上传我们刚才下载的证书 image.png

  2. 进入在 /usr/local/nginx/conf/ 目录
    cd /usr/local/nginx/conf/
    image.png

  3. 新建 w3.conf 空白文件
    touch w3.conf
    image.png

  4. 进入 w3.conf 的文件操作模式
    vim /usr/local/nginx/conf/w3.conf

  5. i 键开始编辑
    注释的地方需要手动修改

# w3.conf模板

server {
    listen 443 ssl;
    # 这里换成自己的子域名
    server_name w3.chimeng.xyz;
    # 展示给用户的网页路径
    root /home/project/bdmoa/web/dist;

    # 路径换成刚才上传的SSL证书路径
    ssl_certificate ssl/8718758_w3.chimeng.xyz.pem;
    ssl_certificate_key ssl/8718758_w3.chimeng.xyz.key;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        # 展示给用户的网页路径
        root /home/project/bdmoa/web/dist;
    }

    location /api{
        # 当请求以api开头时,换成对应服务端的地址,端口号记得在安全组开放
        proxy_pass http://127.0.0.1:3000;
        add_header Content-Type "text/plain;charset=utf-8";
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST';
    }
}
  1. esc 键退出编辑模式

  2. 退出并回到终端
    :wq 保存并退出
    :q 不保存退出
    :q! 不保存退出(强制)

  3. 进入 nginx.conf 主配置文件的操作模式
    vim /usr/local/nginx/conf/nginx.conf

  4. i 键进入文件编辑模式
    注释部分为新增代码

worker_processes  1;
# 加入本段代码
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    # 导入刚才我们新建的配置文件,这里填的是路径,而我们新建的w3.conf与nginx.conf正好在同一目录下
    include       w3.conf;

    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen 443 ssl;
        server_name www.chimeng.xyz;
        root /home/project/myweb;
        ssl_certificate ssl/8713426_www.chimeng.xyz.pem;
        ssl_certificate_key ssl/8713426_www.chimeng.xyz.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        location / {
            root /home/project/myweb;
        }
    }

    server {
        listen 80;
        server_name www.chimeng.xyz;
        rewrite ^(.*)$ https://$host$1;

        location / {
            root   /home/project/myweb;
        }
    }
}
  1. esc 键退出编辑模式

  2. 退出并回到终端
    :wq 保存并退出
    :q 不保存退出
    :q! 不保存退出(强制)

  3. 关闭并重启nginx服务,无报错即为启动成功
    现在,我们就可以去通过子域名去访问我们的网站了

至此,部署流程完结~~