文章目录
- 前言
- 一、选购服务器
- 二、申请SSL证书流程
- 三、在云服务器安装Docker
- 1.安装Docker程序
- 2.配置加速器
- 3.配置文件
- 4.创建Nginx容器
- 总结
前言
网搜了很多CentOS云服务器Docker配置 nginx 反向代理+https的解决办法,都是失败了,所以在这总结了一下。
一、选购服务器
我选用的是腾讯云的轻量应用服务器——CentOS 7.6。
二、申请SSL证书流程
我的域名是阿里云购买的,所以我演示的是阿里云的流程,进入下面的界面,申请免费的证书。
然后进行证书的申请,下面框起来的部分填写需要申请的域名(如api.xxx.com就必须填api,而不是www,因为免费证书申请的是单个域名的证书)。
申请完证书之后,下载nginx的证书,会有两个文件一个时pem,一个时key,后面会用到,先存着。
三、在云服务器安装Docker
首先,SELINUX是CentOS自带的安全服务跟很多程序冲突,所以先关闭这个服务。找到/etc/sysconfig/selinux文件,把其中的SELINUX设置为disabled,保存文件之后重启CentOS系统。
1.安装Docker程序
代码如下:
yum install docker -y
下面是常用的Docker程序的命令:
service docker start service docker stop service docker restart
2.配置加速器
打开/etc/docker/daemon.json文件,然后设置成如下内容:
{ "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] }
配置完成之后重启Docker,加速器才能生效:
service docker restart
3.配置文件
首先下载安装Nginx的镜像:
docker pull nginx:1.21.3
然后在/root/目录中创建nginx文件夹,然后创建html、cert文件夹和nginx.conf文件。
将申请的证书,上传到刚刚创建的cert文件夹(腾讯云和阿里云都可以申请免费的证书)。
nginx.conf文件配置(将以下代码复制到nginx.conf文件,需要修改的部分已标注):
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 443 ssl; #a需要修改的部分:你申请证书的域名(例如www.xxxx.com、api.xxx.com) server_name 你申请证书的域名; root html; index index.html index.htm; #a需要修改的部分:将xxx.pem和xxx.key换成你上传至服务器的文件名 ssl_certificate /usr/share/nginx/cert/xxx.pem; ssl_certificate_key /usr/share/nginx/cert/xxx.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; location / { #a需要修改的部分:必须输入服务器地址 #a如果没有端口号可以不填,如果填端口号 #a那么服务器的防火墙就必须开放这个端口。 #a例如http://10.10.10.10:8888 proxy_pass http://你的服务器地址:端口号; } } server { listen 80; #a需要修改的部分:你申请证书的域名(例如www.xxxx.com、api.xxx.com) server_name 你申请证书的域名; #a需要修改的部分:你申请证书的域名(例如www.xxxx.com、api.xxx.com) return 301 https://你申请证书的域名$request_uri; } include /etc/nginx/conf.d/*.conf; }
4.创建Nginx容器
docker run -it -d --name nginx11 --net=host \ -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /root/nginx/cert:/usr/share/nginx/cert:ro \ -v /root/nginx/html:/usr/share/nginx/html:ro \ nginx:1.21.3
然后用浏览器访问你的域名(例如:https://www.xxx.com):
成功!成功!成功!
总结
本文简单介绍了CentOS云服务器Docker创建Nginx容器配置反向代理和https的使用法。
原文链接:https://blog.51cto.com/u_13539/8572629