美文网首页
一步一步将node.js项目部署至阿里云服务器(nginx篇)

一步一步将node.js项目部署至阿里云服务器(nginx篇)

作者: 哈喽蜗的 | 来源:发表于2020-09-09 16:04 被阅读0次

    今天我们来讲一讲怎么用docker部署nginx,并通过nginx部署ssl证书

    第一步、安装nginx

    docker pull nginx:latest

    老样子通过 docker images去查看是否安装成功

    第二步、接下来启动nginx 

    启动之前我们现在根目录的/opt/docker_v/nginx下新建四个文件夹,分别为conf,conf.d, html , logs ,用来映射配置文件

    docker run --name nginx -d -p 80:80 -p 443:443 -p 3900:3900 -p 3700:3700 -v /opt/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /opt/docker_v/nginx/html:/usr/share/nginx/html -v /opt/docker_v/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker_v/nginx/logs:/var/log/nginx nginx

    此时运行会报错

    看字面意思是说nginx.conf不是一个文件夹,是否确定将一个文件夹映射到一个文件中,这个问题困扰了我好久,查了很多资料,终于找到了解决办法,如下:

    1、首先运行 :docker run --name nginx -p 8086:80 -d nginx

    注意:这个命令不会将配置文件映射出来

    2、通过docker cp命令将刚刚运行的nginx容器中的相关配置文件拷贝到我们后需要映射的目录下

    docker cp 07e55c69a133:/etc/nginx/conf.d/default.conf /opt/docker_v/nginx/conf.d/default.conf

    docker cp 07e55c69a133:/usr/share/nginx/html /opt/docker_v/nginx/html

    docker cp 07e55c69a133:/etc/nginx/nginx.conf /opt/docker_v/nginx/conf/nginx.conf

    docker cp 07e55c69a133:/var/log/nginx /opt/docker_v/nginx/logs

    3、docker rm -f 刚刚运行的nginx容器,他的使命已经结束了

    4、再次运行我们之前的命令

    docker run --name nginx -d -p 80:80 -p 443:443 -p 3900:3900 -p 3700:3700 -v /opt/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /opt/docker_v/nginx/html:/usr/share/nginx/html -v /opt/docker_v/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker_v/nginx/logs:/var/log/nginx nginx

    这个时候就不会报错了,通过浏览器打开我们的域名地址

    第三步、通过nginx反向代理转发

    假如我们有一个项目,端口号为8086,此时如果通过域名去访问,必须加上端口号才能访问,如:http://api.mofang.cn:8086 ,因为服务器默认的端口号为80,只有端口号为80的项目才可以不需要额外加上端口号
    此时我们就可以用nginx做一个代理转发,具体步骤如下

    1、进入到我们之前映射的配置目录,找到nginx.conf文件

    添加一下代码

    server {

            listen 80;#端口号

            server_name  api.mofang.top;//配置好的二级域名

            location / {

                   proxy_pass http://公网IP:8086;

                   root  /usr/share/nginx/html;

                   index  index.html index.htm;

          }

    }

    配置好以后 重启nginx  

    docker restart nginx

    这个时候,我们的项目就通过nginx代理到了我们的8086端口上,通过刚刚的二级域名就能直接访问了,不需要加端口了

    第四步、前两天我在阿里云上申请了一个免费的ssl证书,今天一起搞了

    如何申请请看这 https://yq.aliyun.com/articles/637307

    证书部署步骤如下

    1、首先将下载下来的证书添加的服务器的/opt/docker_v/nginx/conf/ca目录下

    2、通过docker cp拷贝到nginx容器内部的/etc/nginx/ca目录下

    注意:容器内部ca文件夹需要自己去mkdir

    docker cp /opt/docker_v/nginx/conf/ca/4468778_api.mofang.top.pem e0b892b8ac43:/etc/nginx/ca/4468778_api.mofang.top.pem 

    docker cp /opt/docker_v/nginx/conf/ca/4468778_api.mofang.top.key e0b892b8ac43:/etc/nginx/ca/4468778_api.mofang.top.key

    3、配置nginx.conf文件,在文件下方加上以下代码

    server {

    #SSL 访问端口号为 443 docker映射端口3700

    listen 443 ssl;

    #填写绑定证书的域名

    server_name api.mofang.top;

    #证书文件名称

    ssl_certificate ca/4468778_api.mofang.top.pem;

    #私钥文件名称

    ssl_certificate_key ca/4468778_api.mofang.top.key;

    ssl_session_timeout 5m;

    #请按照以下协议配置

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    ssl_prefer_server_ciphers on;

    location / {

    proxy_pass http://公网IP:8086;

    }

    }

    接下来重启nginx,就OK了

    最后提一句:nginx配置过程中不是一帆风顺,大家一定要用好映射出来的logs文件,里面有错误日志,错误一目了然,可以给大家减少许多时间。

    相关文章

      网友评论

          本文标题:一步一步将node.js项目部署至阿里云服务器(nginx篇)

          本文链接:https://www.haomeiwen.com/subject/wxmeektx.html