docs/常见服务器反向代理配置参考
更新于 2026-11-06 阅读约 6 分钟

常见服务器反向代理配置参考

本页提供 Fast-Https 的站点配置模板。已有 Vue 构建产物时,直接发布静态文件。已有运行中的后端服务时,用反向代理把请求转发到它的监听地址(上游)。选与你的场景对应的一节即可。

目标对应示例Fast-Https 负责
发布静态文件Vue读取并返回构建产物
转发 HTTP 接口Flask把请求转发到上游服务
通过 HTTPS 访问后端GitLab、Jenkins在代理端处理 HTTPS,再转发给 HTTP 上游
从 HTTP 首页跳转到 HTTPS 入口Jira、SonarQube80 端口跳转,443 端口代理

1 把配置放到正确的位置

Fast-Https v1.5.0 的压缩包在 config/fast-https.json 中用 "include": ["./conf.d"] 加载 config/conf.d/ 下的站点。保留已有配置,按示例给出的文件名创建文件。每个文件放一个 JSON 对象。 使用主配置集中管理站点时,则将每个对象单独添加到 http.server 数组。选一种放置方式即可。

示例中的 *.example.com 是占位域名。改成指向 Fast-Https 主机的实际域名,并确保对应端口可用。127.0.0.1 表示上游与 Fast-Https 在同一台机器上。上游在另一台机器时,把 proxy_pass 换成从 Fast-Https 主机可以访问的地址和端口。HTTPS 示例还要将证书与私钥放到 config/cert/,并更新两处路径。关于证书,参见 配置网站通过 HTTPS 访问。

2 发布 Vue 静态站点

将构建生成的 index.html 和资源文件放在同一个发布目录。将下面的内容保存为 config/conf.d/club.example.com.json,把 root 改为发布目录的实际路径。配置生效后,访问对应的 HTTP 域名应显示 Vue 首页。

{
  "listen": 80,
  "server_name": "club.example.com",
  "location": [
    {
      "url": "/",
      "type": "local",
      "root": "/var/www/club.example.com",
      "index": ["index.html", "index.htm"]
    }
  ]
}

如果应用需要在刷新子路由时回退到首页,参见 配置发布单页面静态站点。

3 反向代理 Flask 接口

先从 Fast-Https 所在机器访问 Flask 的一个已知接口,确认上游可以响应。将下面的内容保存为 config/conf.d/api.example.com.json。配置生效后,用代理域名访问同一个接口路径,核对状态码和响应内容。

{
  "listen": 80,
  "server_name": "api.example.com",
  "location": [
    {
      "url": "/",
      "type": "proxy",
      "proxy_pass": "http://127.0.0.1:5001"
    }
  ]
}

4 通过 HTTPS 访问 GitLab 或 Jenkins

以下模板以已经提供 HTTP 服务的上游为前提。对外访问的域名和协议需要与应用设置的公开地址对应。按需参考 GitLab 的外部 TLS 终止配置 或 Jenkins 的反向代理说明。

GitLab

保存为 config/conf.d/gitlab.example.com.json。该配置会在发给 GitLab 的请求中设置 Connection: keep-alive。

{
  "listen": "443 ssl",
  "server_name": "gitlab.example.com",
  "ssl_certificate": "./cert/gitlab.example.com.pem",
  "ssl_certificate_key": "./cert/gitlab.example.com-key.pem",
  "location": [
    {
      "url": "/",
      "type": "proxy",
      "proxy_pass": "http://127.0.0.1:9980",
      "proxy_set_header": [
        {
          "HeaderKey": "Connection",
          "HeaderValue": "keep-alive"
        }
      ]
    }
  ]
}

Jenkins

保存为 config/conf.d/jenkins.example.com.json。

{
  "listen": "443 ssl",
  "server_name": "jenkins.example.com",
  "ssl_certificate": "./cert/jenkins.example.com.pem",
  "ssl_certificate_key": "./cert/jenkins.example.com-key.pem",
  "location": [
    {
      "url": "/",
      "type": "proxy",
      "proxy_pass": "http://127.0.0.1:9780"
    }
  ]
}

5 为 Jira 或 SonarQube 设置 HTTPS 入口

每个服务使用两个文件。HTTP 站点把访问导向 HTTPS 首页,HTTPS 站点把请求转发到上游。下列 rewrite 使用固定目标地址,适合首页入口。如果需要保留子路径和查询参数,先用真实访问路径验证所选的重定向规则。

Jira

将 HTTP 站点保存为 config/conf.d/jira-http.json。

{
  "listen": 80,
  "server_name": "jira.example.com",
  "location": [
    {
      "url": "/",
      "type": "rewrite",
      "rewrite": "https://jira.example.com/"
    }
  ]
}

将 HTTPS 站点保存为 config/conf.d/jira-https.json。

{
  "listen": "443 ssl",
  "server_name": "jira.example.com",
  "ssl_certificate": "./cert/jira.example.com.pem",
  "ssl_certificate_key": "./cert/jira.example.com-key.pem",
  "location": [
    {
      "url": "/",
      "type": "proxy",
      "proxy_pass": "http://127.0.0.1:9880"
    }
  ]
}

SonarQube

将 HTTP 站点保存为 config/conf.d/sonarqube-http.json。

{
  "listen": 80,
  "server_name": "sonarqube.example.com",
  "location": [
    {
      "url": "/",
      "type": "rewrite",
      "rewrite": "https://sonarqube.example.com/"
    }
  ]
}

将 HTTPS 站点保存为 config/conf.d/sonarqube-https.json。

{
  "listen": "443 ssl",
  "server_name": "sonarqube.example.com",
  "ssl_certificate": "./cert/sonarqube.example.com.pem",
  "ssl_certificate_key": "./cert/sonarqube.example.com-key.pem",
  "location": [
    {
      "url": "/",
      "type": "proxy",
      "proxy_pass": "http://127.0.0.1:9000"
    }
  ]
}

6 应用配置并检查

保存配置文件后,Fast-Https 会在下次启动时读取配置。服务已在运行时,在 Linux 的 Fast-Https 解压目录执行以下命令重新加载配置。

./fast-https reload

静态站点检查首页与资源是否加载。反代站点使用已知能访问的路径,对比直连上游和经过代理的响应。HTTPS 站点还要确认浏览器信任站点证书。如果配置了 HTTP 入口,访问 HTTP 首页,确认地址栏显示 rewrite 中配置的 HTTPS 地址。