Nginx搭建 Https 运行Docker项目

1、环境介绍

阿里云centos 7.4php

Nginx/1.12.1html

Let’s Encrypt 永久免费 SSL 证书nginx

Docker已打包好项目的镜像 (详情参考http://www.cnblogs.com/killall007/p/8477484.html)c++

2、Nginx安装

首先安装ssl,pcre,zlib,gzip等,使用以下命令:git

(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

下载所需的包: 
分别从这些网站下载最新稳定版:github

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

解压这些文件,并不须要安装:web

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端口docker

systemctl start firewalld.service
firewall-cmd --add-port=80/tcp --permanent  
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload 
netstat -tunpl #查看已开启端口及服务

启动nginx服务centos

进入安装目录
 /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测试是否成功

3、安装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;
        #}

4、启动docker容器运行项目

(详情参考http://www.cnblogs.com/killall007/p/8477484.html)

docker run -p 5000 xiaowenxiao/hellodocker.web:v1

5、重启nginx

[root@admin sbin]# ./nginx -s reload
(中止服务:ps -ef | grep nginx查进程号以后 kill -9 进程号 便可)

浏览器输入:http://www.xiaowenxiao.xin 自动跳转https://www.xiaowenxiao.xin 请求会转发到docker已部署好的项目上。

 

至此,https部署升级结束。

相关文章
相关标签/搜索