如何配置IIS将scuser.easyfast.com/swagger反向代理到localhost:5003
解决方案:通过IIS反向代理将scuser.easyfast.com/swagger映射到localhost:5003
1. 安装并启用必要的IIS模块
- 确保已安装 Application Request Routing (ARR) 和 URL Rewrite 模块(可通过IIS管理器的「管理」→「Web平台安装程序」搜索安装)
- 启用ARR代理:
- 打开IIS管理器,选中服务器节点(左侧最顶部)
- 双击「Application Request Routing Cache」
- 在右侧「操作」栏点击「服务器代理设置」
- 勾选「启用代理」,点击「应用」
2. 配置scuser.easyfast.com站点的URL重写规则
- 选中IIS中的scuser.easyfast.com站点,双击「URL Rewrite」
- 点击右侧「添加规则」,选择「空白规则」,点击「确定」
- 配置规则参数:
- 名称:比如
SwaggerReverseProxy - 匹配URL:
- 请求路径:选择「匹配模式」,输入
^swagger(.*)$ - 忽略大小写:勾选
- 请求路径:选择「匹配模式」,输入
- 条件(可选,确保仅匹配目标域名):
- 点击「添加」,条件输入填
{HTTP_HOST},匹配类型选「与模式匹配」,模式输入^scuser\.easyfast\.com$
- 点击「添加」,条件输入填
- 操作:
- 操作类型:选择「重写」
- 重写URL:输入
http://localhost:5003/swagger{R:1} - 追加查询字符串:勾选
- 停止处理后续规则:勾选
- 名称:比如
- 点击「应用」保存规则
3. 调整.NET Core API的Swagger配置(可选但推荐)
确保API允许外部访问Swagger,在Program.cs中检查配置:
builder.Services.AddSwaggerGen(); // ... app.UseSwagger(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1"); // 保持默认路由前缀即可,无需修改为空,因为我们代理的是/swagger路径 });
默认Kestrel配置已允许本地访问,无需额外调整。
4. 验证与排查
- 直接访问
https://scuser.easyfast.com/swagger,确认是否正常加载API的Swagger页面 - 若出现502错误:
- 检查Docker容器内的API是否确实在
localhost:5003正常运行(直接访问http://localhost:5003/swagger测试) - 确认IIS应用池权限允许发起本地HTTP请求
- 检查Windows防火墙是否阻止IIS访问5003端口
- 检查Docker容器内的API是否确实在
- 若Swagger页面样式异常:
- 打开URL重写规则的「服务器变量」选项卡
- 添加变量
HTTP_X_ORIGINAL_ACCEPT_ENCODING,值设为{HTTP_ACCEPT_ENCODING} - 添加变量
HTTP_ACCEPT_ENCODING,值设为空(避免双重压缩导致样式加载失败)
内容的提问来源于stack exchange,提问作者Swapneswar Mohapatra
相关产品推荐
相关产品推荐

