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>