docker 部署nginx并配置通过https访问

docker 部署nginx并配置通过https访问

之前的nginx都是直接在宿主机上部署的,今天使用docker部署尝试下。

1.在dockerHub上搜索对应的版本
dockerHub官网地址:https://hub.docker.com
搜索nginx 查看版本,支持的版本很多,就选个1.20的版本吧
在这里插入图片描述
2.拉取nginx:1.20镜像

docker pull nginx:1.20

docker images查看是否拉取下来
在这里插入图片描述
3.在宿主机上将配置文件和html文件配置好
我们需要将配置文件nginx.conf文件、静态html文件、证书文件在宿主机上配置完毕

usr/local/nginx/下创建对应的文件(nginx.conf)和文件夹(cert、html)
在这里插入图片描述
cert文件夹中的文件
在这里插入图片描述
html文件夹中的文件
在这里插入图片描述
nginx.conf 配置文件内容

location /backend/ 中是后端代理的地址

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    
    
    worker_connections  1024;
}


http {
    
    
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

        # HTTPS server
    #
    server {
    
    
        listen 443 ssl;
        server_name  localhost;

        ssl_certificate      /usr/local/nginx/cert/server.crt;
        ssl_certificate_key  /usr/local/nginx/cert/server.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

                location / {
    
    
            root   /usr/share/nginx/html/dist;
                        try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }

                location /backend/{
    
    
                       proxy_set_header Host $http_host;
                       proxy_set_header X-Real-IP $remote_addr;
                       proxy_set_header REMOTE-HOST $remote_addr;
                       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                       proxy_pass http://localhost:8991;
               }

                error_page   500 502 503 504  /50x.html;
        location = /50x.html {
    
    
            root   html;
        }
    }
}

4.运行nginx镜像

docker run -d --privileged=true --name nginx1.2 \
	 -v /usr/local/nginx/html:/usr/share/nginx/html \
	 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf \
	 -v /usr/local/nginx/cert:/usr/local/nginx/cert \
	 --restart always \
	 -p 443:443 -p 80:80 nginx:1.20
--privileged=true                                     # 容器内被赋予root权限
--name nginx1.2                                       # 容器名称为nginx1.2
-v /usr/local/nginx/html:/usr/share/nginx/html        # 挂载的静态文件目录     
-v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf  # 挂载的nginx配置文件目录
-v /usr/local/nginx/cert:/usr/local/nginx/cert        # ssl证书挂载目录
--restart always                                      # 自启动
-p 443:443 -p 80:80                                   # 映射的端口号 由于是https协议 所以443需要映射出来

使用docker ps -a 查看容器运行的状况,运行成功在这里插入图片描述
如果防火墙开着的话,把443、80端口放行

systemctl status firewalld                                 # 查看防火墙状态
firewall-cmd --zone=public --add-port=80/tcp --permanent   # 开放80端口
firewall-cmd --zone=public --add-port=443/tcp --permanent  # 开放443端口
systemctl restart firewalld                                # 重启防火墙

访问https://ip,即可访问
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43484014/article/details/121137537