docker-compose nginx + ssl配置

文章目录

    • 我的https地址
    • nginx docker-compose.yml 配置
      • docker-compose
      • docker-compose.yml内容
      • 启动容器
      • 说明
    • nginx配置ssl
      • 1.在阿里上购买免费的SSL证书(当然你也可以买收费的,我买的是免费的)
      • 2.下载证书
      • 3.配置default.conf
    • (借鉴)参考文章

自从有了 docker 以后linux上面很多东西都变的很简单,nginx也不例外,这里我分享一个我的nginx的docker-compose的配置,以及nginx的ssl配置

我的https地址

https://k.lengff.xyz

nginx docker-compose.yml 配置

docker-compose

关于docker-compose,可以参考我的这篇文章

docker学习总结

docker-compose.yml内容

version: "3"
services: 
 nginx:
  restart: always
  container_name: nginx
  image: nginx
  ports:
   - 80:80
   - 443:443
  volumes: 
   - /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d
   - /usr/local/docker/nginx/log:/var/log/nginx
   - /usr/local/docker/nginx/wwww:/var/www
   - /usr/local/docker/nginx/etc/letsencrypt:/etc/letsencrypt
   - /usr/local/docker/nginx/html:/usr/share/nginx/html
   - /usr/local/docker/nginx/cert:/etc/nginx/cert

启动容器

命令: docker-compose up -d

说明

  1. 我们的nginx配置文件在/usr/local/docker/nginx/conf.d这个目录
  2. proxy_pass http://xxx.xxx.xxx.xx:8080; 这个的配置是有讲究的 这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的

nginx配置ssl

这一步也是超级简单的

1.在阿里上购买免费的SSL证书(当然你也可以买收费的,我买的是免费的)

购买链接:https://www.aliyun.com/product/cas (这不是广告)

2.下载证书

购买完证书,审核结束以后 , 开始下载证书 , 服务器类型记得选nginx , 然后我们就可以拥有xxxx.key 和 xxxx.pem 两个文件 , 将文件上传到我们服务器的

/usr/local/docker/nginx/cert

这个目录中

3.配置default.conf

其实这一步也是超级简单的,我直接贴上代码,在代码里面说明

server {
        listen 80;
        listen    443 ssl;#这个是https访问的端口
        server_name k.lengff.xyz;#域名地址

        
        #增加ssl
        #ssl on;        #如果强制HTTPs访问,这行要打开
        ssl_certificate         cert/klengff.pem;#你的xxxx.pem文件名称
        ssl_certificate_key     cert/klengff.key;#你的xxxx.key文件名称

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

        ssl_protocols  SSLv2 SSLv3 TLSv1.2;# 指定密码为openssl支持的格式

        ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
        ssl_prefer_server_ciphers  on;   #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
        
        location / {
            #这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的
            #因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径
            #我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的
            proxy_pass http://xxx.xxx.xxx.xx:8080;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        error_page 404          /404.html;
}

(借鉴)参考文章

docker安装nginx并配置通过https访问

你可能感兴趣的:(docker,笔记,linux,小白笔记)