CentOS云服务器Docker配置 nginx 反向代理和https的使用


前言

网搜了很多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的使用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GovG.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值