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

今天我们来讲一讲怎么用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篇))