docker安装nginx并配置域名证书

该文详细描述了如何使用Docker拉取Nginx1.18.0镜像,创建挂载目录,启动并配置容器,包括设置SSL证书,定义服务器代理规则,以及处理静态页面。同时,文章还提到了日志查看、容器重启和安全注意事项。
摘要由CSDN通过智能技术生成
  1. docker拉取nginx

    docker pull nginx:1.18.0
    
  2. 创建挂载目录

    mkdir /data/mynginx -p
    
  3. 启动容器

    docker run -d --name nginx -p 80:80 -p 443:443 nginx:1.18.0
    
  4. 从容器内部复制主要文件到宿主机,用作配置文件挂载目录

    docker cp nginx:/etc/nginx /data/mynginx/nginx
    docker cp nginx:/var/log/nginx /data/mynginx/log
    docker cp nginx:/usr/share/nginx/html /data/mynginx/html
    
  5. 删除原容器

    docker rm -f nginx
    
  6. 启动容器

    docker run -d --name nginx -p 80:80 -p 443:443 -v /data/mynginx/log:/var/log/nginx -v /data/mynginx/nginx:/etc/nginx -v /data/mynginx/html:/usr/share/nginx/html nginx:1.18.0
    
    #查看启动情况
    docker ps
    #如果未启动成功,查看报错日志
    docker logs nginx
    
  7. 更改配置信息

    nginx1.18.0 目前静态页面的root根目录 /etc/nginx/html//data/mynginx目录下创建文件夹html和ssl
    在html目录下放置静态页面文件
    在ssl目录下放置域名证书
    在nginx.conf文件中配置新的server
    
    目前配置如下,注意根据自己的情况更改相关的关键信息
    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;
    
        upstream tomcat {
            server localhost:8001;
        }
    
    
        map $http_upgrade $connection_upgrade {
            default upgrade;
            '' close;
        }
    
        server {
            client_max_body_size 60m;
            #SSL 访问端口号为 443
            listen 443 ssl;
            #填写绑定证书的域名
            server_name www.baidu.com.cn baidu.com.cn;
            #证书文件名称
            ssl_certificate /etc/nginx/ssl/baidu.com.cn_bundle.crt;
            #私钥文件名称
            ssl_certificate_key /etc/nginx/ssl/baidu.com.cn.key;
            ssl_session_timeout 5m;
            #请按照以下协议配置
            ssl_protocols TLSv1.2 TLSv1.3;
            #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
            ssl_prefer_server_ciphers on;
    
    
            location /map {
                #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
                #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
                #root html;
                # index  index.html index.htm;
                proxy_set_header HOST $host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
                proxy_pass http://你的内网或者外网IP:80;
            }
    
            location / {
                #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
                #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
                #root html;
                # index  index.html index.htm;
                proxy_set_header HOST $host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://你的内网或者外网IP:你的服务端口;
            }
    
            location /entry {
                proxy_set_header HOST $host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://你的内网或者外网IP:你的服务端口;
            }
            location /chat {
                proxy_pass http://你的内网或者外网IP:8082;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
            }
        }
    
        server {
            listen 80;
            server_name newbaidu.com;
            #没有生效,实际用的要目录是docker内部的/ect/nginx/html
            location /usr/share/nginx/html/newbaidu {
                index index.html index.htm;
            }
        }
        server {
            listen 80;
            server_name www.newbaidu.com;
            #没有生效,实际用的要目录是docker内部的/ect/nginx/html
            location /usr/share/nginx/html/newbaidu {
                index index.html index.htm;
            }
        }
    }
    
  8. 重新启动

    docker restart nginx
    #注意,API接口转发的ip最好设置为内网IP,只暴露域名给客户端,这样更安全
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值