AWS域名SSL证书配置及Nginx+Cloudflare转发规则问题咨询
Nginx+Cloudflare 多域名分端口转发配置方案
Cloudflare 侧配置
- 确认两个域名的解析托管在Cloudflare,在DNS控制台添加2条A记录:
domain.com:记录值填写EC2实例绑定的弹性IP,代理状态选择橙色云(代理开启)sub-domain.com:记录值填写同个EC2弹性IP,代理状态选择橙色云(代理开启)
- 进入SSL/TLS设置页,加密模式选择
Full,禁止选Flexible避免回源重定向循环。如果需要强制全站HTTPS,在边缘证书设置中打开「始终使用HTTPS」开关即可,不需要在Nginx侧额外写跳转规则。 - 安全组配置仅允许Cloudflare回源IP段访问EC2的80端口,删除公网直连8080、5000端口的放行规则,避免服务被绕过Cloudflare直接访问。
Nginx 侧配置
登录EC2实例,删除原有80端口全量转发到8080的旧规则,在/etc/nginx/conf.d/目录下新建配置文件(比如命名为multi_domain_proxy.conf),写入按域名匹配的反向代理规则:
# 根域转发至本地8080端口(对应MERN前端服务) server { listen 80; listen [::]:80; server_name domain.com; location / { proxy_pass http://127.0.0.1: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; proxy_set_header X-Forwarded-Proto $scheme; } } # 子域转发至本地5000端口(对应MERN后端接口服务) server { listen 80; listen [::]:80; server_name sub-domain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 后端接口如果有WebSocket需求保留下面三行,没有可以删除 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
配置写完后执行以下命令校验配置合法性:nginx -t
当终端返回syntax is ok、test is successful提示后,执行重载命令让配置生效:systemctl reload nginx
后续可选清理
之前配置的Classic Load Balancer、Route 53解析记录如果没有其他业务使用可以直接删除,HTTPS证书直接复用Cloudflare的免费边缘证书即可,不需要在EC2侧单独维护ACM证书或者自签证书。
内容的提问来源于stack exchange,提问作者NevetsKuro
相关产品推荐
相关产品推荐

