You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将CloudFlare域名与运行多Docker镜像的AWS EC2关联求助

配置域名访问EC2上的Docker服务

我在CloudFlare购买了域名example.com,并在CloudFlare中配置了证书和私钥。AWS EC2实例上运行着两个Docker镜像:Flask Hello World服务监听3000端口,Angular Hello World服务监听4000端口。我希望通过example.com:3000访问Flask服务,通过example.com:4000访问Angular服务。

已配置的DNS记录

类型(Type)名称(Name)内容(Content)代理状态(Proxy Status)TTL
Aexample.comEC2实例的公网IPv4地址仅DNS(DNS Only)自动(Auto)
AwwwEC2实例的公网IPv4地址仅DNS(DNS Only)自动(Auto)

Flask Dockerfile

# 使用Fedora作为基础镜像
FROM fedora

# 更新软件包仓库并升级所有软件包
RUN dnf upgrade -y

# 安装pip及其他必要软件包
RUN dnf install -y python3-pip gcc python3-devel

# 设置工作目录为/app
WORKDIR /app

# 将当前目录的所有内容复制到容器内的/app目录
COPY . .

# 从requirements.txt安装Python依赖
RUN pip3 install -r requirements.txt

# 暴露Flask应用运行的端口
EXPOSE 5000

# 设置Flask环境变量
ENV FLASK_APP=run.py

# 启动Flask应用
CMD ["flask", "run", "--host=0.0.0.0"]

Angular Dockerfile

# 使用官方Node.js运行时作为基础镜像(构建阶段)
FROM node:18 AS build

# 设置容器内的工作目录
WORKDIR /app

# 将package.json和package-lock.json复制到工作目录
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制剩余的应用代码到工作目录
COPY . .

# 构建生产环境的Angular应用
RUN npm run build --prod

# 使用官方Nginx运行时作为基础镜像(部署阶段)
FROM nginx:alpine

# 将构建阶段生成的Angular应用复制到Nginx的html目录
COPY --from=build /app/dist/sample-frontend/browser /usr/share/nginx/html

# 复制SSL证书
COPY ssl/origin.pem /etc/nginx/ssl/origin.pem
COPY ssl/origin.key /etc/nginx/ssl/origin.key

# 删除默认的Nginx配置文件
RUN rm /etc/nginx/conf.d/default.conf

# 将自定义Nginx配置文件复制到Nginx配置目录
COPY nginx.conf /etc/nginx/conf.d

# 向外暴露443端口(HTTPS)
EXPOSE 443

# 容器启动时启动Nginx
CMD ["nginx", "-g", "daemon off;"]

Angular nginx.conf

# HTTP(80端口)重定向到HTTPS(443端口)
server {
    listen 80;
    server_name example.com www.example.com;

    # 将所有HTTP请求重定向到HTTPS
    return 301 https://$host$request_uri;
}

# HTTPS服务器配置块
server {
    listen 443 ssl;
    server_name example.com www.example.com;

    # SSL证书与密钥
    ssl_certificate /etc/nginx/ssl/origin.pem;
    ssl_certificate_key /etc/nginx/ssl/origin.key;

    # 启用强SSL加密
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    root /usr/share/nginx/html;
    index index.html;

    # 提供Angular应用服务
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 启用Gzip压缩
    gzip on;
    gzip_types text/plain application/javascript text/css application/json;
    gzip_min_length 256;
}

内容的提问来源于stack exchange,提问作者DipayanRay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:14:53