IIS服务器需要安装两个插件
1、URL Rewrite插件安装
该插件主要功能是用于Url重写,插件地址:https://www.iis.net/downloads/microsoft/url-rewrite ,选择中文简体的64位版本下载,下载之后,双击一步步安装。
安装完插件之后,重启IIS服务器软件,点击服务器,可以看到URL重写的模块。当看到这个模块的时候,说明我们的插件已经安装成功了!
2、Microsoft Application Request Routing(ARR)插件安装
该插件主要用于反向代理相关功能。插件安装地址:https://www.microsoft.com/en-us/download//details.aspx?id=47333 。进入页面之后,点击如下Download按钮下载。下载之后,一路下一步直到安装成功!
安装成功之后,重启IIS,将会看到如下模块。如果看到这个模块的话Application Request Routing Cache 模块的话,说明这个插件安装成功!
3、开启代理
双击Application Request Routing Cache 模块 ,点击ServerProxySetting。
4、选中“Enable proxy”-“应用”-“Back to ARR Cache”。
执行完以上操作之后,我们的反向代理就开启了。接下来,将客户端的具体Url代理到指定的Window服务。
5、设置.NET站点可以使用windows,服务部署。
我的asp.net core站点使用的是.NET6框架,对于不同版本的.NET来说,设置站点windows服务的代码可能不太一样。我这里仅仅以.NET6为例。需要修改一下三处代码,就可以将.NET Web站点部署为Window服务。具体可以参考微软官当的示例代码:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-6.0&tabs=visual-studio 微软官方已经在文档中明确了需要修改的地方。
6、发布.NET Web站点到一个文件夹。
右键单击网站的项目文件,选择发布,将网站发布到一个文件夹下面,这个文件夹下面的.exe将会作为Window服务的启动程序部署。
7、创建Window服务。
通过管理员方式启动cmd控制台,执行以下代码,可以在服务列表中创建一个Window服务。我们可以设置服务为自启动,每次开机启动之后,都会启动网站。以下命令还设置了网站监听的端口号。
sc.exe create SiteMe binpath="C:\wwwroot\www.cshelloworld.com\SiteMe.exe --urls=http://localhost:8000"
8、IIS重写配置文件。
我的个人站点有三个站点,一个是用户浏览的主站点www.cshelloworld.com(或者cshelloworld.com),一个是admin.cshelloworld.com,一个是file.cshelloworld.com。三个站点分别用户前台展示、后台管理、文件管理。我在IIS中设置了以下的配置文件,将三个站点分别转发到本地的8000、8001、8002三个Windows服务端口。由此就实现了IIS作为反向代理将,不同站点的请求转发到不同的本地windows服务站点。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="www.cshelloworld.com代理">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^www\.cshelloworld\.com$" />
<add input="{HTTP_HOST}" pattern="^cshelloworld\.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8000/{R:1}" />
</rule>
<rule name="admin.cshelloworld.com代理">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^admin\.cshelloworld\.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8001/{R:1}" />
</rule>
<rule name="file.cshelloworld.com代理">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^file\.cshelloworld\.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8002/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>