【Windows Server 实战】WAC 反向代理配置

如何为 Windows Admin Center 配置 Apache 反向代理

概述

众所周知,Windows Admin Center (WAC) 是微软提供的强大的 Windows Server 管理工具,内网部署确实爽,但难免会有公网访问作为跳板机的需求,只可惜其反向代理情景下 limitation 之多(如频繁要求登录、不能在网站某个子目录下代理WAC),令人咂舌。

本文将介绍如何在 Linux 服务器上使用 Apache 配置反向代理,让 WAC 可以通过自定义域名和 Let's Encrypt SSL 证书进行安全访问。

环境说明

  • 反向代理服务器: Linux (运行 Apache)
  • WAC 后端服务器: 172.25.25.54:443,有内网证书,但是未加域的电脑无法信任证书。
  • 域名: wac.example.com
  • SSL 证书: Let's Encrypt

配置步骤

1. 启用必要的 Apache 模块

首先需要确保启用了以下 Apache 模块:

bash 复制代码
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod headers
sudo a2enmod rewrite

2. 配置 VirtualHost

在 Apache SSL 配置文件中添加以下 VirtualHost 配置(通常是 /etc/httpd/conf.d/ssl.conf/etc/apache2/sites-available/ssl.conf):

apache 复制代码
<VirtualHost *:443>
ServerName wac.example.com

# SSL 配置
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

# SSL 代理配置
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

# 基本代理设置
ProxyRequests off
ProxyPreserveHost on

# NTLM 认证支持
# WAC 使用 Windows 身份验证,需要特殊配置
SetEnv proxy-nokeepalive 0
SetEnv proxy-initial-not-pooled 1

# WebSocket 支持
# WAC 需要 WebSocket 进行实时通信
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/(.*)$ wss://172.25.25.54:443/$1 [P,L]

# 反向代理配置
ProxyPass / https://172.25.25.54:443/
ProxyPassReverse / https://172.25.25.54:443/

# 设置协议头
RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

3. 配置说明

SSL 配置
  • 使用 Let's Encrypt 证书提供 HTTPS 加密
  • SSLProxyEngine on 启用后端 SSL 代理
  • 由于 WAC 使用自签名证书,需要禁用证书验证
代理设置
  • ProxyPreserveHost on - 关键设置!保留原始 Host 头,让后端知道请求的域名
  • ProxyRequests off - 禁用正向代理,只启用反向代理
NTLM 支持
apache 复制代码
SetEnv proxy-nokeepalive 0
SetEnv proxy-initial-not-pooled 1

这两个设置对于 Windows 身份验证(NTLM)至关重要:

  • 保持连接活跃,不使用 Keep-Alive
  • 确保初始连接不使用连接池
WebSocket 支持

WAC 大量使用 WebSocket 进行实时通信,需要特殊的重写规则:

apache 复制代码
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/(.*)$ wss://172.25.25.54:443/$1 [P,L]

4. 测试和重载配置

检查配置语法:

bash 复制代码
sudo apachectl configtest

如果显示 "Syntax OK",重载 Apache:

bash 复制代码
sudo systemctl reload httpd
# 或
sudo apachectl graceful

5. 防火墙配置

确保防火墙允许 443 端口:

bash 复制代码
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

常见问题排查

问题 1: 访问显示 Apache 默认页面

原因 : ProxyPreserveHost 设置为 Off

解决方案 : 确保设置为 ProxyPreserveHost on,这样后端服务器才能收到正确的 Host 头。

问题 2: WebSocket 连接失败

症状: WAC 部分功能无法使用,控制台显示 WebSocket 错误

解决方案:

  1. 确保启用了 proxy_wstunnel 模块
  2. 检查 WebSocket 重写规则是否正确配置

问题 3: Windows 身份验证失败

症状: 无法登录或频繁要求输入凭据

解决方案: 确保设置了 NTLM 相关的环境变量:

apache 复制代码
SetEnv proxy-nokeepalive 0
SetEnv proxy-initial-not-pooled 1

总结

通过以上配置,您可以成功地为 Windows Admin Center 配置 Apache 反向代理。关键点包括:

  • ✅ 启用 SSL 和代理模块
  • ✅ 配置 ProxyPreserveHost on 保留主机头
  • ✅ 支持 NTLM 身份验证
  • ✅ 启用 WebSocket 支持
  • ✅ 使用 Let's Encrypt 证书
相关推荐
乔宕一1 小时前
windows SSH服务修改SSH登陆后的默认终端
运维·windows·ssh
love530love1 小时前
ComfyUI-3D-Pack:Windows 下手动编译 mesh_inpaint_processor C++ 加速模块
c++·人工智能·windows·python·3d·hunyuan3d·comfyui-3d-pack
oyzz1202 小时前
Windows 上彻底卸载 Node.js
windows·node.js
闭关苦炼内功2 小时前
Win10 安装 MySQL5.7.36 数据库记录
数据库·windows·mysql
斯密码赛我是美女3 小时前
周报(欢乐赛+信息搜集ctfshow+Trae-mcp)
网络·windows
米饭不加菜4 小时前
Windows 键盘快捷方式总览
windows·计算机外设
小小小米粒4 小时前
观察者模式
windows
lucky_syq4 小时前
Windows电脑部署OpenClaw保姆级教程(2026最新版)
人工智能·windows·开源·电脑·openclaw
无巧不成书02184 小时前
FFmpeg 保姆级安装教程!Windows/macOS/Linux全平台覆盖,
windows·macos·ffmpeg
Yu_摆摆5 小时前
windows部署prometheus+windows_exporter+grafana+alertmanager实现监控CPU、内存、磁盘并邮件告警
windows·grafana·prometheus