首页 文章 精选 留言 我的

精选列表

搜索[容器],共10000篇文章
优秀的个人博客,低调大师

容器中利用Nginx-proxy实现多域名的自动反向代理、免费SSL证书

在个人的小项目或者测试环境中,配置反向代理显得十分繁琐,而借助 Nginx-proxy 的镜像,即使是小白,也能快速实现域名转发。 1.域名、IP自动转发 在开始之前,首先黑进了自家的路由器,将某个域名(甚至不存在),如dotnet1.nginx-test.com和dotnet2.nginx-test.com指向了局域网内 IP 为 "192.168.9.10" 的机器上(hosts、iptable等方式)。接着,假设你已经安装了 Docker的基础上,只需再安装docker-compose。如果你对这一切一无了解的话,可以使用daocloud提供的的一键脚本。回到本文讨论的重点,在不写任何 Nginx 配置的前提下,让相关的域名指向对应的应用。编写如下的 docker-compose.yml: version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro dotnet1: image: daocloud.io/koukouge/zhs:master container_name: dotnet1 environment: - VIRTUAL_PORT=80 #监听的端口 - VIRTUAL_HOST=dotnet1.nginx-test.com,192.168.9.10 #监听的地址 只需要一句docker-compose up就能启动对应的应用,实现自动转发。 2.零停机重载域名、IP 在上一节中,我们已经是在后台启动了nginx-proxy和dotnet1的应用,如果我们在新增或者修改原有的域名呢?假设在原有的 docker-compose.yml 增加一个 2048 的镜像: simple: image: alexwhen/docker-2048 container_name: simple environment: - VIRTUAL_PORT=80 - VIRTUAL_HOST=dotnet2.nginx-test.com 这种情况下,重启整个 docker-compose 显然不是最佳的方式。为了不影响已经运行中的应用,只需对新增或者需要修改的应用执行如下命令: sudo docker-compose up --build --no-deps -d simple # simple 为应用的名称 3.Let's Encrypt免费证书 随着网络安全意识的提高,Https 逐渐成为互联网的标配。特别是在国内的网络环境中,网络劫持现象愈演愈烈。即使是个人的小博客网站,博主并不接入广告的情况下,仍然可以无意中发现博客中居然有"澳门在线赌场"的广告,这时候使用 SSL 证书就显得十分必要了。Let's Encrypt是一家致力于推广 Https 技术的公益组织,其免费证书得到了几乎所有浏览器的支持,是目前最为流行、也是最大的免费证书提供者。同样的,在我们之前基础上,我们同样可以实现对多个域名证书的傻瓜化配置。在原有的基础下,我们将第一节中的 docker-compose.yml 修改为: version: '2' services: nginx: restart: always image: nginx container_name: nginx ports: - 80:80 - 443:443 volumes: - /etc/nginx/conf.d - /etc/nginx/vhost.d - /usr/share/nginx/html - /etc/nginx/certs:/etc/nginx/certs:ro dotnet1: image: daocloud.io/koukouge/zhs:master container_name: dotnet1 environment: - VIRTUAL_PORT=80 #监听的端口 - VIRTUAL_HOST=dotnet1.nginx-test.com #监听的地址 - LETSENCRYPT_HOST=dotnet1.nginx-test.com #证书的域名 - LETSENCRYPT_EMAIL=someone@simple.com #证书所有者的邮箱,快过期时会提醒 nginx-gen: restart: always image: jwilder/docker-gen container_name: nginx-gen volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /etc/nginx/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro volumes_from: - nginx entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf letsencrypt-nginx-proxy-companion: restart: always image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt-nginx-proxy-companion volumes_from: - nginx volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /etc/nginx/certs:/etc/nginx/certs:rw environment: - NGINX_DOCKER_GEN_CONTAINER=nginx-gen 先别急着启动,如果已经启动了就会发现nginx-gen应用缺失了nginx.tmpl文件。所以我们需要将其下载并放置在相应的位置: curl https://raw.githubusercontent.com/jwilder/nginx-proxy/master/nginx.tmpl > /etc/nginx/nginx.tmpl 最后,只要一声令下,就可以发现网站已经成功多了一个绿色的小锁。 4.结语 本文主要是参考https://github.com/fatk/docker-letsencrypt-nginx-proxy-companion-examples 本文仅仅是针对新手提供的教程,如果你有其他好的想法或者用法,可以在评论区点评。 本文采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 转载请注明来源: 张蘅水 我在开发者头条中还会每日分享不错的技术文章,搜索 356194 即可查看

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册