跳转至

网络配置:公网与反向代理访问

一、 访问场景说明

  • 仅内网访问:如果您的业务仅限于内网环境,可以直接使用 主管理节点(Master)的内网 IP 进行访问。在此场景下,本章节配置可以跳过

    • 系统控制台(访问 443):
      • https://主节点内网IP
      • https://主节点内网IP/admin
      • https://主节点内网IP:443
      • https://主节点内网IP:443/admin
    • 租户控制台(访问 44344331):
      • https://主节点内网IP/tenant
      • https://主节点内网IP:443/tenant
      • https://主节点内网IP:44331
    • 云空间客户端:配置云平台地址为 https://主节点内网IP,端口号为 44301
  • 公网/跨网访问

    • 若需要允许客户端通过公网访问,必须进行 44301 端口映射。
    • 若仅需要允许租户管理员从公网访问,必须进行 44331 端口映射。
    • 若需要允许系统管理员从公网访问,必须进行 443 端口映射。

二、 修改配置以支持公网访问

2.1 映射端口一致性调整

强烈建议公网映射端口与内网端口保持一致。若必须不一致,则需调整 Nginx 配置将内网端口改为与公网端口一致。

下文 kubectl 相关的所有命令都需要在 主管理节点 执行。

1. 查看当前监听端口:

[xspace@host151 ~]# sudo kubectl describe configmap/nginx-conf -n nginx | grep -w 44301
    listen [::]:44301 ssl;
    listen 44301  ssl;
[xspace@host151 ~]# 
[xspace@host151 ~]# sudo kubectl describe configmap/nginx-conf -n nginx | grep -w 44331
    listen [::]:44331 ssl;
    listen 44331  ssl;

2. 编辑配置:

执行如下命令,进入 ConfigMap 配置文件的编辑状态,将对应的 4430144331 修改为公网映射后的实际端口。

[xspace@host151 ~]# sudo kubectl edit configmap/nginx-conf -n nginx

2.2 系统控制台(443 端口)特殊安全配置

系统控制台一般不建议暴露到公网。若确需开启,由于 443 端口受政策及安全监管要求,公网访问时通常需调整为非标准端口(如 8443)。

步骤 A:调整监听端口

调整 ConfigMap,将 443 修改为映射后的端口(如 8443)。

调整前:

[xspace@host151 ~]# sudo kubectl describe configmap/nginx-conf -n nginx | grep -w 443
    listen [::]:443 ssl;
    listen 443  ssl;

调整后:

[xspace@host151 ~]# sudo kubectl describe configmap/nginx-conf -n nginx | grep -w 8443
    listen [::]:8443 ssl;
    listen 8443  ssl;

步骤 B:配置访问白名单(is_allowed)

系统控制台对公网访问有严格拦截。即使端口已映射,也必须将公网地址手动加入 is_allowed 列表,否则将显示 403 Forbidden

注:44301 和 44331 端口无此白名单要求。

查看当前允许列表:

[xspace@host151 ~]$ sudo kubectl describe configmap/nginx-conf -n nginx | grep -w ^map -A 6
map $http_host $is_allowed {
  default 0;
  xspace.local 1;
  192.222.8.151 1;
  192.222.8.152 1;
  192.222.8.153 1;
}

编辑 ConfigMap:

执行如下命令,进行配置文件的编辑状态

sudo kubectl edit configmap/nginx-conf -n nginx

添加匹配规则(配置示例):

按照实际访问的地址进行添加,确保包含映射后的端口。

map $http_host $is_allowed {
  default 0;
  xspace.local 1;
  192.222.8.151 1;       # 允许内网IP
  192.222.8.152 1;
  192.222.8.153 1;
  202.1.1.1:8443 1;      # 允许通过公网映射后的Web访问地址
}

🔴 重要红线:

  • 禁止修改变量名:必须使用 map $http_host,严禁改为 map $host

  • 精确匹配:必须带上端口号(如 IP:8443),系统不接受也不匹配不带端口号的 IP 条目。


三、 使配置生效

修改并保存 ConfigMap(在 vi 编辑器中输入 :wq)后,必须在 主管理节点 重启 Nginx 服务以加载配置:

[xspace@host151 ~]$ sudo kubectl rollout restart daemonset/nginx -n nginx
daemonset.apps/nginx restarted

四、 维护提醒

  • 403 错误排查:若配置后仍出现 403,请核对浏览器地址栏中的 IP:端口 是否与 ConfigMap 列表中的字符串字符级完全一致
  • 版本升级:系统升级时自定义的 configmap 会被重置,需要再次配置。