Docker中安装使用Nginx并安装SSL证书

一、安装部署Nginx

1.在DockerHub中搜索Nginx的镜像

docker search nginx        #如果不是root用户,请自行在所有命令前面加上sodu

2.拉取最新版本的官方nginx镜像

#如果不写TAG号,会自动追加:latest获取最新版本的
docker pull nginx

或者docker pull nginx:指定版本号

3.创建运行nginx容器

docker run --name nginx -d -p 80:80 nginx

4.关联数据卷

 为了后期配置方便,我们将容器中的文件挂载映射到宿主机上。

4.1进入容器内部

docker exec -it nginx /bin/bash

 4.2查看nginx目录结构

cd /etc/nginx/
ls

 nginx目录解析

|- conf.d                 //nginx 配置文件 包含default.conf 的默认配置文件

|- mime.types        //nginx代理的请求头文件

|- nginx.conf         //nginx 代理的配置文件入口,配置反向代理及负载均衡从这个文件开始

4.3查看配置文件

cat nginx.conf

从上面的配置文件中可以看到nginx 的日志文件在默认在/var/log/nginx的目录中;

现在我们已经搞清楚了两个目录文件/etc/nginx 和/var/log/nginx目录结构,那我们需要把这两个目录文件挂载到宿主机下面,方便我们日后的配置及日志的查看工作

4.4退出nginx容器

exit

 4.5创建宿主机的挂载目录

mkdir -p /docker/nginx          #创建nginx的配置目录
mkdir /docker/nginx/logs        #在刚刚创建的nginx目录中创建日志文件目录
mkdir /docker/nginx/cert        #创建证书目录cert

4.6把容器中的nginx.conf和mime.types文件拷贝到宿主机上

docker cp dce7bd9bb832:/etc/nginx/nginx.conf /docker/nginx/nginx.conf

docker cp -a dce7bd9bb832:/usr/share/nginx/html /docker/nginx

docker cp dce7bd9bb832:/etc/nginx/conf.d /docker/nginx/conf.d

4.7停止运行先前的nginx容器并删除

docker stop nginx
docker rm nginx

4.8创建运行容器并关联容器卷

docker run --name nginx -d -p 80:80 -p 443:443 -v /docker/nginx/html:/usr/share/nginx/html -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d/:/etc/nginx/conf.d/ -v /docker/nginx/logs/:/var/log/nginx/ -v /docker/nginx/cert/:/etc/nginx/cert/ --privileged=true nginx

访问IP:80即可显示nginx的欢迎主页,至此nginx安装成功。

二、安装SSL证书

1.在宿主机中创建证书目录

在前面已经创建。

 2.将下载解压后的本地证书文件和密钥文件上传到Nginx服务器(宿主机)的证书目录

可以使用第三方工具Xftp或FileZilla上传。

备注:免费SSL证书获取

3.修改Nginx配置文件(nginx.conf),修改与证书相关的配置内容

红字部分为新增内容,设置了HTTP请求自动跳转HTTPS,后期可自己重定向到项目。

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;

    include /etc/nginx/conf.d/*.conf;

    #以下属性中,以ssl开头的属性表示与证书配置有关。

    server {

        listen 443 ssl;

        #配置HTTPS的默认访问端口为443。

        #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。

        #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。

        server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。

        ssl_certificate /etc/nginx/cert/6296804_yourdomain.com.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。

        ssl_certificate_key /etc/nginx/cert/6296804_yourdomain.com.key; #需要将cert-file-name.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; #表示使用的TLS协议的类型。

        ssl_prefer_server_ciphers on;

        location / {

            root /usr/share/nginx/html;  #站点目录。

            index index.html index.htm;

        }

        location /portainer/ {

            proxy_pass http://公网IP:9000/;  #代理链接的portainer web端口

        }

    }

    server {

        listen 80;

        server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。

        rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。

    }

}

4.重启nginx容器

docker restart nginx

5.尝试访问,成功

输入的是http://,成功跳转到https://

 

访问www.域名/portainer/,成功反向代理到portainer的登录界面

 如果没有portainer的可以安装下试试效果

# 安装docker的可视化面板 portainer (数据卷路径不可改变)
docker search portainer
 
docker pull portainer/portainer
 
#单机版启动
docker run --name portainer -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

备注:可能有人注意到nginx首页的最后一句话你们是没有的,那是公安备案号和ICP备案号,ICP备案​​​​​​​和联网备案​​​​​​​成功后会给,按照法律法规要求必须展示在首页底部,这个属于建站的内容,大家可以自己百度,给个参考:个人博客建立

整理不易,望多赞多收藏!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker安装Nginx并配置SSL证书的步骤如下: 1. 准备SSL证书:根据不同的云服务商,证书文件的后缀可能有所不同。腾讯云的证书文件后缀为.crt和.key,阿里云的证书文件后缀为.pem和.key。确保证书文件正确并可用。 2. 下载最新的Nginx镜像:使用以下命令下载最新的Nginx镜像: ``` docker pull nginx ``` 3. 创建目录:创建几个目录,用于挂载Nginx容器内的配置文件和日志文件。使用以下命令创建目录: ``` mkdir -p /usr/local/nginx/{conf,html,logs,ssl} ``` 4. 启动一个Nginx临时容器:使用以下命令启动一个Nginx临时容器,并将配置文件复制到主机上: ``` docker run --name nginx-temp -d nginx docker cp nginx-temp:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf docker rm -f nginx-temp ``` 5. 上传SSL证书:将SSL证书上传到服务器的指定目录,例如将证书文件复制到/usr/local/nginx/ssl目录下。 6. 修改nginx.conf配置文件:编辑/usr/local/nginx/conf/nginx.conf文件,配置SSL证书的路径。确保路径是在容器内的地址,而不是主机的地址。 7. 正式启动Nginx使用以下命令启动Nginx容器,并将挂载目录和端口映射配置好: ``` docker run --name nginx -p 80:80 -p 443:443 \ -v /usr/local/nginx/html:/usr/share/nginx/html \ -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/nginx/conf.d:/etc/nginx/conf.d \ -v /usr/local/nginx/logs:/var/log/nginx \ -v /usr/local/nginx/ssl:/etc/nginx/ssl \ --privileged=true -d --restart=always nginx ``` 8. 检查Nginx是否成功启动:使用以下命令检查Nginx容器是否成功启动: ``` docker ps ``` 以上是使用Docker安装Nginx并配置SSL证书的步骤。请根据实际情况进行操作。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [docker安装nginx并配置ssl证书](https://blog.csdn.net/LuoHuaX/article/details/127320361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值