使用Docker一键搭建FastDFS+Nginx支持https

系统环境:CentOS Linux release 7.4.1708 (Core)

参考:

https://blog.csdn.net/tttzzztttzzz/article/details/86709318

https://www.linuxea.com/1423.html

 

一、拉取镜像并启动(改下ip地址)

docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=xx.xx.xxx.xxx(ip地址) -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/local/fdfs registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs

 

二、测试FastDFS

1.进入fastdfs容器

docker exec -it fastdfs /bin/bash

2.添加index.html测试文件

echo "Hello FastDFS!">index.html

3.测试文件上传

fdfs_test /etc/fdfs/client.conf upload index.html

返回 example file url: http://xx.xx.xx.xx/group1/M00/00/00/rBDzWF5M-I-AaotYAAAADwL5vO468_big.html 表示FastDFS上传功能没问题

 

三、下载fastdfs-nginx-module-1.20、http_ssl_module、模块和nginx安装包

1.下载fastdfs-nginx-module-1.20模块

可以看下容器的linux版本

cat /etc/issue

我的是Alpine Linux 3.8。没有apt-get、vim等命令。alpine 通过apk –help命令查看完整的包管理命令

创建下载目录

mkdir /usr/local/src

进入下载目录

cd /usr/local/src

下载fastdfs-nginx-module-1.20

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

解压

tar xf V1.20.tar.gz

 

2.下载nginx安装包

wget http://nginx.org/download/nginx-1.13.6.tar.gz

解压

tar xf nginx-1.13.6.tar.gz

进入nginx-1.13.6目录

cd nginx-1.13.6

 

3.下载http_ssl_module模块

apk --update --no-cache add geoip geoip-dev pcre libxslt gd openssl-dev pcre-dev zlib-dev build-base linux-headers libxslt-dev gd-dev openssl-dev libstdc++ libgcc patch logrotate supervisor inotify-tools && rm -rf /var/cache/apk/*

 

4.nginx添加模块

./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src --with-httpstubstatus_module --with-httpsslmodule

解释下 ./configure --prefix 后面跟的是nginx安装目录

编译nginx

make

 

5.查看是否支持ssl

objs/nginx -V

有 TLS SNI support enabled 这个信息表示nginx支持ssl

把安装目录下的sbin/nginx备份

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-bak

把objs/nginx拷贝到安装目录下sbin的文件夹下

cp objs/nginx /usr/local/nginx/sbin

进入nginx安装目录

cd /usr/local/nginx

查看nginx.conf是否编写有误

sbin/nginx -t

 

6.ssl证书

创建证书目录

mkdir cert

从阿里云下载证书拷贝到cert目录下

退出容器

exit

把宿主机文件拷贝到容器里

docker cp 宿主机目录或文件 容器ID(或容器名):/usr/local/nginx/cert

 

7.编写fastdfs容器里的nginx.conf (支持http和https)

vi /usr/local/nginx/conf/nginx.conf
server {
   listen 80;
   #server_name localhost;

   ####### https ###########
   listen 443 ssl;
   server_name localhost;
   #ssl on;
   ssl_certificate /usr/local/nginx/cert/cert.pem;
   ssl_certificate_key /usr/local/nginx/cert/cert.key;
   ssl_session_timeout 5m;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   ####### https ###########


   location ~ /group[0-9]/M00 {
     ngx_fastdfs_module;
   }
 }

保存后查看是否编写正确

sbin/nginx -t

查看是否已经监听80和443端口

netstat -unltp

如果443和80端口都没有被监听到,需启动nginx

sbin/nginx

如果443和80端口只监听到一个,停止nginx

sbin/nginx -s stop

再启动nginx

sbin/nginx

再次上传文件

把文件地址拷贝到浏览器地址栏看下能否正常显示,再把http改成https看下能否正常显示,如果都没问题就表示成功了

你可能感兴趣的:(FastDFS)