跳到主要内容

HTTP 与 HTTPS 代理配置指南

本文档介绍如何为微搭低代码平台配置 HTTP 和 HTTPS 代理访问,支持通过 Nginx 等七层代理实现安全的 HTTPS 访问。

1. 环境准备

在开始配置之前,请确保具备以下条件:

1.1 基础环境

  • 七层代理服务器:Nginx、Apache 或负载均衡器(LB)
  • 访问域名:已备案的域名,并完成 DNS 解析配置
  • SSL 证书:有效的 SSL 证书文件(.crt 和 .key 文件)

1.2 网络要求

  • 代理服务器能够访问微搭服务器
  • 防火墙已开放相应端口(80、443、8080 等)
  • 域名 DNS 解析指向代理服务器 IP

2. 微搭平台配置

2.1 修改配置文件

  1. 进入安装目录

    cd /data/tencent/weda
  2. 编辑配置文件

    vim config.yaml
  3. 更新配置参数

    # 访问协议(http 或 https)
    domainProtocol: https

    # 访问域名
    domain: your-domain.com

    # 对外访问端口(http: 80, https: 443)
    domainPort: 443

    # 微搭服务内部端口(确保端口未被占用)
    serverPort: 8080

2.2 应用配置

# 重启服务使配置生效
./upgrade.sh
配置说明
  • domainProtocol:根据实际需求选择 http 或 https
  • domain:填写实际的访问域名
  • domainPort:HTTP 使用 80,HTTPS 使用 443
  • serverPort:微搭内部服务端口,默认 8080

3. Nginx 代理配置

3.1 HTTP 访问配置

完整配置文件示例

创建或编辑 /etc/nginx/nginx.conf 文件:

# 全局配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

# 事件模块配置
events {
worker_connections 1024;
}

# HTTP 模块配置
http {
# MIME 类型映射
include /etc/nginx/mime.types;
default_type application/octet-stream;

# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

# 访问日志
access_log /var/log/nginx/access.log main;

# Gzip 压缩配置
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_types application/javascript application/json application/xml
application/xhtml+xml text/css text/plain text/xml;

# 客户端请求配置(重要:支持大文件上传)
client_max_body_size 500m; # 客户端请求体最大允许大小(文件上传限制)
client_body_buffer_size 10m; # 读取客户端请求体的缓冲区大小

# HTTP 服务器配置
server {
listen 80;
server_name your-domain.com; # 替换为您的实际域名

# 代理配置
location / {
proxy_pass http://192.168.1.100:8080; # 替换为您的微搭服务器 IP 和端口
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
}
}
}

3.2 HTTPS 访问配置

SSL 证书准备

  1. 创建证书目录

    mkdir -p /etc/nginx/certs
  2. 上传证书文件

    # 将证书文件上传到指定目录
    /etc/nginx/certs/
    ├── server.crt # SSL 证书文件
    └── server.key # SSL 私钥文件

HTTPS 服务器配置

将上述 nginx.conf 中的 server 块替换为:

server {
listen 443 ssl http2;
server_name your-domain.com; # 替换为您的实际域名

# SSL 证书配置
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;

# SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

# 代理配置
location / {
proxy_pass http://192.168.1.100:8080; # 替换为微搭服务器 IP 和端口
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
}
}

# HTTP 重定向到 HTTPS(可选)
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}

3.3 关键配置参数说明

客户端请求配置

  • client_max_body_size 500m:设置客户端请求体最大允许大小(文件上传限制)

    • 默认值:1m
    • 推荐值:500m,支持微搭平台大文件上传需求
    • 根据实际文件上传需求进行调整
  • client_body_buffer_size 10m:设置读取客户端请求体的缓冲区大小

    • 默认值:8k 或 16k(取决于平台)
    • 推荐值:10m,提升大文件处理性能
    • 有助于防止大文件上传时的内存问题

服务器配置

  • server_name your-domain.com:指定此服务器块的域名
    • 替换为您的实际域名
    • 必须与 SSL 证书域名匹配(HTTPS 配置)
    • 支持通配符(如 *.example.com)和多域名配置

代理配置

  • proxy_pass http://192.168.1.100:8080:定义后端服务器地址
    • 192.168.1.100 替换为您的微搭服务器 IP 地址
    • 8080 替换为您的微搭服务端口(在 config.yaml 中配置)
    • 即使前端使用 HTTPS,后端仍使用 HTTP 协议(SSL 在代理层终结)

代理头配置(确保功能正常的关键配置)

  • proxy_set_header X-Forwarded-Proto $scheme:传递原始协议(http/https)
  • proxy_set_header Host $http_host:保持原始 Host 头
  • proxy_set_header X-Real-IP $remote_addr:传递真实客户端 IP 地址
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:维护完整的代理链信息

4. 配置验证与测试

4.1 Nginx 配置验证

# 检查配置文件语法
nginx -t

# 重新加载配置
nginx -s reload

# 如果 Nginx 通过系统包管理器安装并注册为 systemd 服务时,可使用以下 systemctl 命令:
# 重启 Nginx 服务进程
systemctl restart nginx

# 启用 Nginx 服务开机自启动
systemctl enable nginx

4.2 访问测试

配置完成后,通过以下方式访问平台:

  • HTTP 访问http://your-domain.com
  • HTTPS 访问https://your-domain.com

4.3 功能验证

  1. 基础访问:确认能正常打开平台首页
  2. 登录测试:验证用户登录功能正常
  3. 文件上传:测试大文件上传功能
  4. SSL 证书:使用浏览器检查 SSL 证书状态

5. 常见问题与解决方案

5.1 代理配置问题

问题:访问时出现 502 Bad Gateway 错误

解决方案

  • 检查微搭服务是否正常运行
  • 验证代理服务器能否访问微搭服务器 IP 和端口
  • 确认防火墙规则正确配置

5.2 SSL 证书问题

问题:HTTPS 访问提示证书错误

解决方案

  • 确认证书文件路径正确
  • 检查证书是否过期
  • 验证证书域名与访问域名匹配

5.3 文件上传问题

问题:上传大文件时失败

解决方案

  • 确认 client_max_body_size 配置足够大
  • 检查 client_body_buffer_size 设置
  • 验证磁盘空间充足

6. 安全建议

6.1 SSL 安全配置

  • 使用强加密算法和协议版本
  • 定期更新 SSL 证书
  • 启用 HSTS(HTTP Strict Transport Security)

6.2 访问控制

  • 配置适当的防火墙规则
  • 限制不必要的端口访问
  • 启用访问日志监控

6.3 性能优化

  • 启用 Gzip 压缩减少传输大小
  • 配置适当的缓存策略
  • 使用 HTTP/2 提升性能

7. 负载均衡器配置

如果使用云服务商的负载均衡器(如腾讯云 CLB、阿里云 SLB),配置要点:

  1. 后端服务器:指向微搭服务器的 IP:8080
  2. 健康检查:配置适当的健康检查路径
  3. SSL 终结:在负载均衡器层面配置 SSL 证书
  4. 会话保持:根据需要配置会话保持策略