在 aws 上公开非 80 或 443 端口

Expose non 80 or 443 port on aws

我希望在 ec2 上托管的服务器上启用 https 并将流量从 http 重定向到 https。

我已经通过 https 实现了与端口 4000 的绑定,但是在为我的实例公开此端口以提供内容时遇到问题。

在我的安全组中,我有以下配置:

万一它可能有用,sudo docker ps 的输出是:

CONTAINER ID        IMAGE               COMMAND               CREATED              STATUS              PORTS              NAMES
59315f7862f1        site_web            "/site/entrypoint.sh …"   37 minutes ago      Up 36 minutes       0.0.0.0:443->443/tcp, 0.0.0.0:4000-4001- >4000-4001/tcp, 0.0.0.0:5432->5432/tcp   site_1

我正在考虑使用nginx从443或iptables重定向流量的路由。

解决这个问题应该看什么方向?我是否非常规地配置了这个?

您编写的安全组允许 tcp/443 来自任何地方(IPv4 和 IPv6),tcp/80 来自任何地方(IPv4 和 IPv6)并允许 tcp/22 来自单个 IP 146.90.23.135.

如果您的目标是公开列出的所有 docker 端口,您应该删除安全组中的两个 TCP 80 条目并添加两个新条目:

  • 类型:自定义 TCP 规则,协议:TCP,端口范围:4000- 4001,来源:0.0.0.0/0
  • 类型:自定义 TCP 规则,协议:TCP,端口范围:5432, 来源:0.0.0.0/0
  • 保留 TCP 443(转到您的 docker 容器)和 TCP 22(这样您就可以通过 SSH 连接到您的主机)的规则。

一些注意事项:

  • 安全组的Type栏其实只是为了帮助输入常用协议,从filtering/firewall的角度来说没有任何意义。 HTTP 与端口范围设置为 80Custom TCP Rule 没有区别。
  • 您不会使用 AWS 安全组进行任何端口重定向。如果你需要,你可以在 OS 中使用 iptables,或者你可以使用 AWS 的 Elastic Load Balancer。