docker配置nginx及HTTPS操作

前提已搭建完成

1:停止nginx 

docker stop nginx

2:删除产生的配置文件

docker rm nginx

3:run 配置--这一步很关键,需要将操作到的文件都映射出来,注意文件夹是否存在,不存在的情况需要先创建,

配置https就需要加上 -p 443:443 以及 -v /mydata/nginx/nginx/ssl:/etc/nginx/ssl:ro \

命令如下

docker run -p 80:80 -p 443:443 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /mydata/nginx/nginx/ssl:/etc/nginx/ssl:ro -v /mydata/nginx/nginx/conf.d:/etc/nginx/conf.d -d nginx:1.10

运行成功则不会报错,报错了自行百度 ,成功之后映射之后就可以开始按正常的nginx配置了

/mydata/nginx/nginx/conf.d文件夹下面创建一个  default.conf文件,

默认跳转到运行的java项目下

我这里的https证书是腾讯云申请的放在了/mydata/nginx/nginx/ssl文件夹里面,使用的是相对目录

server {
  listen 443 ssl;
  #填写绑定证书的域名
  server_name 域名; 
  #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
  #root /usr/share/nginx/html; 
  #index index.html index.htm;   
  #证书文件名称
 ssl_certificate  ssl/1_XXX.crt; 
  #私钥文件名称
ssl_certificate_key ssl/2_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 / {
    proxy_pass http://域名:8085;
  }

  #管理后台
     location /admin {
        root    /usr/share/nginx/html;
        autoindex on;
        index  index.html index.htm;
    }
    
}

server {
    listen       80;
    server_name 域名;

    location / {
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
        proxy_pass http://域名:8085; 
    }
     #管理后台
     location /admin {
        root    /usr/share/nginx/html;
        autoindex on;
        index  index.html index.htm;
    }
    #Universal Link 文件
    location /.well-known {
        root    /usr/share/nginx/html;
        autoindex on;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

配置完成后重启nginx

docker restart nginx

### 如何在Docker容器中配置Nginx以支持HTTPS 为了使Nginx服务器通过Docker提供安全的HTTPS连接,需创建自定义的`Dockerfile`来构建带有SSL/TLS证书和支持文件的镜像。 #### 创建并编辑 `Dockerfile` 首先,在项目目录下创建一个新的`Dockerfile`用于定制化Nginx安装[^2]: ```dockerfile FROM nginx:latest COPY ./html /usr/share/nginx/html COPY ./conf.d/default.conf /etc/nginx/conf.d/default.conf EXPOSE 443 ``` 此脚本基于官方最新的Nginx镜像,并复制本地HTML内容以及预配置好的Nginx设置到相应位置。这里特别指定了暴露端口443以便处理加密流量。 #### 准备 SSL 证书与私钥 对于生产环境而言,建议购买由受信任CA签发的有效证书;而在开发测试阶段,则可以利用工具如 OpenSSL 来生成临时性的自签名证书: ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /path/to/your/cert.key \ -out /path/to/your/cert.crt \ -subj "/C=CN/ST=Beijing/L=Beijing/O=Company Name/CN=localhost" ``` 上述命令会生成一对有效期一年(`-days 365`) 的 RSA 密钥对 (`cert.key`, `cert.crt`) 并将其保存至指定路径下。 #### 修改 Nginx 配置文件 接下来更新位于 `/etc/nginx/conf.d/default.conf` 中的标准HTTP服务定义为支持 HTTPS: ```nginx server { listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/ssl/cert.crt; # 替换成实际路径 ssl_certificate_key /etc/nginx/ssl/cert.key; # 替换成实际路径 location / { root /usr/share/nginx/html; index index.html index.htm; } } ``` 这段配置指示Nginx监听443端口上的TLS请求,并指向之前准备好的公钥和私钥文件的位置。 #### 构建并运行 Docker 容器 完成以上准备工作之后就可以开始构建新的Docker镜像并将它启动起来: ```bash docker build -t my-secure-nginx . docker run --name secure_nginx -p 443:443 -d my-secure-nginx ``` 这组指令先编译出名为`my-secure-nginx`的新映像,再以后台模式启动一个实例绑定主机系统的443端口给容器内部使用[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值