前端项目通过‘URL 重写’部署在 IIS 中,访问 WebAPI 接口
〇、前言
在前端项目开发时,我们可以通过配置代理 proxy 来访问本地或者是远程接口,但是部署后代理就失效了。如果项目部署在 IIS 上,就没法去对应到指定接口,此时就需要 IIS 中的‘URL重写’功能,来对应要访问的目标地址。
本文将简单介绍下‘URL重写’功能模块的安装、配置,以及日常遇到的问题解决方案。
一、安装‘URL重写’功能模块
如下图标,IIS 中是默认不安装的,需要用户手动安装。安装步骤参考以下三步:
1/3 首先是检查 IIS 中是否有‘Web 平台安装程序’,图标如下图:(用来确认和安装 ARR)
若没有需要去官网下载安装包,直接安装即可。官网地址: ARRv3_0.exe 下载地址
安装成功后,需要重新打开 IIS。
2/3 然后打开‘Web 平台安装程序’,输入‘arr’搜索:
搜索结果,默认情况下,ARR 安装完成后,会如下所示,已经安装了 2.5 版本:
如果没有默认安装需要手动安装,先添加,再安装,最后推荐下载自行安装,直接系统安装也是可以的,如果没成功,就多是两次。
3/3 最后需要配置下 ARR,如下图中的步骤:最后需勾选 Enable Proxy。
此时,再重新打开一下 IIS,即可看到久违的‘URL重写’了。
二、通过‘URL重写’配置入站规则
注意:需要点选 IIS 主目录,来配置‘URL重写’。
添加规则->空白规则,如下:
编辑对应的值:
正则表达式:^(.*?)apitest/(.*)$
可以通过‘测试模式’功能,来测试正则表达式是否准确。
重写地址:http://localhost:55046/api/{R:2}
{R:2} 代表匹配成功的字符串后边的全部内容,并允许附加查询字符串。
举个栗子:
若请求地址为:http://xxxxxxx:1001/apitest/testcontrallor/testmethod?para=10
经重写后的地址:http://localhost:55046/api/testcontrallor/testmethod?para=10
三、报错处理:HTTP 400.605
根据错误页面的提示信息,可以看出是 ARR(ApplicationRequestRouting) 模块的报错。
其中一个原因就是,入站规则配置有问题,导致请求无限循环,比如规则是拦截‘/api/’,重写地址中也包含了‘/api/’就会引起无限循环,导致请求无法命中。
四、部署完成后刷新页面时出现 404
在根目录下添加文件 web.config,并将如下 HTML 代码填入并保存。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="CHRoutes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
<handlers>
<add name="SSL-html" path="*.html" verb="*" modules="ServerSideIncludeModule" resourceType="File" />
</handlers>
</system.webServer>
</configuration>
注:如果有问题欢迎留言讨论,众人拾柴火焰高。
部分参考:前后端分离-IIS部署Vue前端项目
在IIS和Nginx上通过代理部署基于ant-design-pro前端框架开发的应用
前端项目通过‘URL 重写’部署在 IIS 中,访问 WebAPI 接口的更多相关文章
- UrlRewrite(URL重写)--ASP.NET中的实现
概述 今天看了下URL重写的实现,主要看的是MS 的URL Rewrite. URL重写的优点有:更友好的URL,支持老版本的URL URL重写的缺点有:最主要的缺点是性能低下,因为如果要支持无后缀的 ...
- 无法用Put方式请求发布在IIS中的WebAPI
WebApi程序发布到IIS上后,无法使用Put的方式进行请求,错误信息如下: 原因和解决方案: 在IIS中默认不支持Put请求和Delete请求,因为IIS中注册的Web ...
- ASP.NET项目使用MYSQL数据库部署到IIS服务器找不到请求的.Net Framework Data Provider解决方案
使用MySQL开发过程中在自己的机器上跑项目是没有问题的,但在实际部署到服务器上的时候就发生“找不到请求的.Net Framework Data Provider解决方案”错误,在排除项目本身原因之后 ...
- Umbraco部署到IIS中权限问题(back office没有权限新建template)
在开发项目中,发现把基于Umbraco平台开发的网站部署到服务器的IIS之后,访问该网站的back office 在back office中增加一个template时,发送错误,提示 Access t ...
- Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)
先停止tomcat服务 1.进入apache-tomcat-7.0.68/conf/Catalina/localhost(如果之前还都没有启动过tomcat,是不会有此目录的,先启动一次再关闭,会自动 ...
- nginx搭建前端项目web服务器以及利用反向代理调试远程后台接口
前端同学用nginx搭建自己的web服务器,后台程序专门部署在一台服务器上(我们之前公司就有三套环境,开发/测试/生产),这样做的好处是 1.前端代码基本都是静态文件,重启一次很快,也就几秒钟时间. ...
- Web应用程序与Web网站及部署在IIS中
在Visual Studio可以创建 Web 应用程序项目或网站项目.通过选择 新建项目 或 打开项目 创建或打开一个 Web 应用程序项目在Visual Studio 文件 菜单. 通过选择 新建网 ...
- 关于asp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure的问题
环境是windows Server2008R2 出现这个问题搞了一下午都没解决,最后又加班才算搞定,由于英文不太好,官方的文档看了好几遍,也按照文档做的,但还是出现这个问题,百度google搜了很多解 ...
- asp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure的问题
环境是windows Server2012 问题的原因是缺少文件:api-ms-win-crt-runtimel1-1-0.dll, dotnet 启动程序失败. 解决方案1: 安装系统补丁: 20 ...
- IIS中访问自己开发的Webservice site就自动停止,尝试重启IIS和重启服务器都不能解决。
今天在加班的时候发现一个奇怪的问题,IIS里面我们自己开发的Webservice site一访问就自动停止.尝试重启IIS和重启服务器都不能解决.后台windows events报错信息是The Mo ...
随机推荐
- 践行初心|方正璞华爱心捐赠人脸识别测温系统WelComID
近日,方正璞华向金鸡湖社区卫生服务中心捐赠了人脸识别测温系统.该设备集人员识别.体温检测等功能于一体,在人员进出的时候完成体温的检测,从而判断是否有异常人员等问题,有效节省人力成本.减少人员接触风险, ...
- JS 模块化 - 03 AMD 规范与 Require JS
1 AMD 规范介绍 AMD 规范,全称 Asynchronous Module Definition,异步模块定义,模块之间的依赖可以被异步加载. AMD 规范由 Common JS 规范演进而来, ...
- CVE-2022-39197(CobaltStrike XSS <=4.7)漏洞复现
最新文章更新见个人博客 漏洞说明 根据9.20日CobaltStrike官方发布的最新4.7.1版本的更新日志中介绍,<=4.7的teamserver版本存在XSS漏洞,从而可以造成RCE远程代 ...
- 了解Elasticsearch写入磁盘的数据
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484171&idx=1&sn=985a71a ...
- linux安装node和达梦数据库8
PS.本次测试只是为了项目需要,但是在部署和启动程序的时候发生了一系列的报错,由此记录下来为日后作参考 安装达梦数据库 1. 达梦数据库(DM8)简介 达梦数据库管理系统是武汉达梦公司推出的具有完全自 ...
- 5G 与数字化转型的关系是怎样的?
5G提供的是通信网络服务,数字化转型需要网络服务,但并不是必须使用5G网络,也就是说5G在数字化转型中并不是必虚的,但可以作为备选项,不过在某些行业比如农业.林业.牧业.港口.建筑等布设有线网络.无线 ...
- 二手商城集成jwt认证授权
------------恢复内容开始------------ 使用jwt进行认证授权的主要流程 参考博客(https://www.cnblogs.com/RayWang/p/9536524.html) ...
- 原生JavaScript
原生JavaScript 为了方便查看. 所有的js和css代码都是嵌入式直接写在html代码中 1.js的引入方式 <!DOCTYPE html> <html lang=" ...
- 使用@Param标识参数
可以通过@Param注解标识mapper接口中的方法参数 此时,会将这些参数放在map集合中,以@Param注解的value属性值为键,以参数为值: 以 param1,param2...为键,以参数为 ...
- 『现学现忘』Git分支 — 38、Git分支介绍
目录 1.Git分支简介 2.Git分支与SVN分支的区别 3.工作中为什么要使用分支 4.Git分支管理的好处 1.Git分支简介 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着,你可 ...