AWS EC2: 使用letsencrypt和nginx通过docker无法访问端口80或443(https)的问题
创始人
2024-11-15 14:02:06
0

要解决AWS EC2上使用letsencrypt和nginx通过docker无法访问端口80或443的问题,可以参考以下步骤和代码示例:

步骤1:确保EC2实例的安全组已允许端口80和443的入站流量。 步骤2:确保您的域名指向正确的EC2实例的公共IP地址。 步骤3:确保您的EC2实例已安装了docker和docker-compose。

以下是一个示例docker-compose.yaml文件,用于在EC2上设置letsencrypt和nginx容器:

version: '3'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx-proxy/certs:/etc/nginx/certs:ro
  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./nginx-proxy/certs:/etc/nginx/certs:rw
    volumes_from:
      - nginx-proxy
    environment:
      - DEFAULT_EMAIL=your_email@example.com

请注意,上述示例中的volumes和ports参数可能需要根据您的环境进行调整。

在运行docker-compose文件之前,确保已创建名为"nginx-proxy"和"letsencrypt"的文件夹,并在"nginx-proxy"文件夹中创建一个空的"certs"文件夹。

然后,使用以下命令运行docker-compose文件:

docker-compose up -d

这将在EC2上启动nginx代理和letsencrypt容器。

接下来,在您的域名注册商的DNS设置中,添加一个A记录,将您的域名指向EC2实例的公共IP地址。

最后,将您的应用程序容器与nginx-proxy网络连接,并使用以下环境变量配置容器以使用letsencrypt证书:

VIRTUAL_HOST=your_domain.com
LETSENCRYPT_HOST=your_domain.com
LETSENCRYPT_EMAIL=your_email@example.com

确保将上述示例中的"your_domain.com"和"your_email@example.com"替换为您自己的域名和电子邮件地址。

重新启动您的应用程序容器后,您应该能够通过域名访问端口80和443了。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...