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

配置Nginx实现SSL加密下子域名分别服务Angular前端与Node.js后端

配置步骤

1. 替换Nginx配置文件(default.conf)

你的原有配置缺少子域名匹配、后端反向代理规则,且存在语法遗漏(第一个server块未闭合),直接替换为以下内容即可:

# 所有80端口请求统一重定向到HTTPS
server {
    listen 80;
    server_name demo.example.com demo-api.example.com;
    return 301 https://$host$request_uri;
}

# 前端子域名配置
server {
    listen 443 ssl;
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
    server_name demo.example.com;
    server_tokens off;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        # 适配Angular路由的重写规则
        try_files $uri $uri/ /index.html;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

# 后端子域名配置
server {
    listen 443 ssl;
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
    server_name demo-api.example.com;
    server_tokens off;

    location / {
        # 替换为你后端Node容器的实际访问地址:如果后端容器映射到宿主机3000端口,用docker网关地址172.17.0.1即可
        proxy_pass http://172.17.0.1:3000;
        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;
    }
}

注意:将配置里proxy_pass的端口改为你后端Node.js容器实际暴露的端口

2. 修改前端API调用地址

把Angular项目里所有调用后端API的前缀,从原来的HTTP地址改为https://demo-api.example.com,重新打包后替换S3里的静态文件,再重新构建前端Nginx镜像即可。

3. 调整容器启动参数

  • 启动后端Node.js容器时,确保端口映射正确,比如你的后端服务监听3000端口,启动命令添加参数-p 127.0.0.1:3000:3000,避免后端端口直接暴露到公网
  • 启动前端Nginx容器时,添加端口映射参数-p 80:80 -p 443:443,确保HTTP和HTTPS端口正常对外

可选优化

生产环境建议替换自签名证书为Let's Encrypt等机构颁发的可信证书,避免浏览器安全告警。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:57:02