一、环境介绍
阿里云centos 7.4
Nginx/1.12.1
Let’s Encrypt 永久免费 SSL 证书
Docker已打包好项目的镜像 (详情参考http://www.cnblogs.com/killall007/p/8477484.html)
二、Nginx安装
首先安装ssl,pcre,zlib,gzip等,使用如下命令:
(yum install -y httpd-devel pcre perl pcre-devel zlib zlib-devel GeoIP GeoIP-devel)
要安装下一些gcc库用于编译 和一些nginx的扩展lib包:
yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
下载所需的包:
分别从这些网站下载最新稳定版:
http://www.pcre.org/
http://zlib.net/
http://openssl.org/
cd
wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz
wget ftp://ftp.openssl.org/source/openssl-1.0.2n.tar.gz
解压这些文件,并不需要安装:
tar -xvf pcre-8.00.tar.gz
tar -xvf openssl-1.0.2n.tar.gz
从http://www.nginx.org上下载nginx源码包:
cd
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar -xvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
进入nginx目录
[root@admin local]# cd nginx-1.12.1
首先,设置安装目录为 /usr/local/nginx
[root@admin nginx-1.12.1]# ./configure --with-http_ssl_module
如果没有报错,开始编译安装
[root@admin nginx-1.12.1]# make
[root@admin nginx-1.12.1]# make install
防火墙开启80、443端口
systemctl start firewalld.service
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload netstat -tunpl #查看已开启端口及服务
启动nginx服务
进入安装目录
/usr/local/nginx
[root@admin ~]# cd /usr/local/nginx
[root@admin sbin]# ./nginx
查看进程,可以看到nginx的master和worker进程
[root@admin sbin]# ps -ef | grep nginx
root 32150 1 0 13:28 ? 00:00:00 nginx: master process ./nginx
nobody 32151 32150 0 13:28 ? 00:00:00 nginx: worker process
root 32154 28494 0 13:28 pts/1 00:00:00 grep nginx ``
可以通过访问ip:80测试是否成功
三、安装Let’s Encrypt 永久免费 SSL 证书(有效期90天)
yum -y install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
chmod +x letsencrypt-auto
安装证书:
./letsencrypt-auto certonly --email 120459905@qq.com -d www.xiaowenxiao.com #-d后对应的是域名
根据提示安装完后会显示证书和私钥的保存位置
在nginx.conf中添加代码:
#gzip on;
server {
listen 80;
server_name www.xiaowenxiao.xin;
rewrite ^/(.*) https://$server_name$1 permanent; #跳转到Https
}
server {
listen 443;
server_name www.xiaowenxiao.xin;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.xiaowenxiao.xin/fullchain.pem; #证书位置
ssl_certificate_key /etc/letsencrypt/live/www.xiaowenxiao.xin/privkey.pem; #私钥位置
location / {
proxy_pass http://172.17.0.2:5000; #反向代理到把请求转发到已经部署好项目的docker容器
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
四、启动docker容器运行项目
(详情参考http://www.cnblogs.com/killall007/p/8477484.html)
docker run -p 5000 xiaowenxiao/hellodocker.web:v1
五、重启nginx
[root@admin sbin]# ./nginx -s reload(停止服务:ps -ef | grep nginx查进程号之后 kill -9 进程号 即可)
浏览器输入:http://www.xiaowenxiao.xin 自动跳转https://www.xiaowenxiao.xin 请求会转发到docker已部署好的项目上。
至此,https部署升级结束。