问题引入:

最近写了一个springboot的项目,准备部署在朋友的Windows服务器上通过域名访问。当我使用80端口运行项目时提示端口被占用,通过查找分析,最终定位到80端口是被IIS(Internet Information Services)占用。
我一开始的想法,是关掉IIS,解除端口占用,但当我打开IIS后,便放弃了这个想法,因为朋友的IIS上部署着好几个.net项目,如果关掉IIS,这些项目就全部挂掉了。毕竟项目是寄人篱下,不能行鸠占鹊巢之举。
我转变思路,使用8080端口先将项目运行起来,然后使用反向代理来隐藏端口号。理想很丰满,现实很骨感。要实现反向代理,就不得不使用nginx了,但奔溃的是,nginx也需要使用80端口。
于是我萌生了使用nginx反向代理IIS和springboot项目的想法,思虑片刻我便放弃了,固然可以使用nginx代理IIS,但并不是最好的方式。IIS是微软提供的WEB服务器,自身便提供了反向代理的能力,可以通过IIS反向代理springboot项目。

环境准备:

要想使用IIS的反向代理,需要两个功能的支持:Application Request RoutingURL重写

  1. 打开Internet Information Services(IIS)管理器,检查是否安装了Application Request RoutingURL重写,下图为没安装;
  2. 如果没有安装,微软官方提供了安装方式, Web平台安装程序 进入官网
    安装Application Request Routing
  3. 安装URL 重写,由于我已经安装过了,所以不用再次安装
  4. 安装完成后,打开“控制面板”->“管理工具”->“Internet Information Services (IIS)管理器”,可以在IIS下面看到我们安装的程序

配置方案:

  1. Application Request Routing Cache 相关配置

  2. 新建一个站点
  3. 选择新建的站点,点击URL 重写 进行配置
配置说明:
名称:随意填写,尽量言简意赅
模式: ^(.*)   ---匹配任意字符
添加条件: 条件输入-> {HTTP_HOST} 模式输入-> ^www.exam.cn$  ---输入本机注册域名
操作类型:默认重写
重写URL:http://127.0.0.1:8080/{R:1} ,这个链接表示要跳转的地址

IIS spring iis springboot_windows


IIS spring iis springboot_IIS_02


IIS spring iis springboot_iis_03


IIS spring iis springboot_spring boot_04


IIS spring iis springboot_spring boot_05


IIS spring iis springboot_IIS_06


4. 配置完成后点击应用,至此反向代理就配置好啦,可以通过域名访问springboot项目了

小结

IIS反向代理给我打开了一扇新的窗户,以后在Windows服务器上运行项目又有了新的选择,配置的过程中也踩了很多坑,不过好在互联网是强大的,我踩的坑都有前人经历过,所以填坑也很容易。代码之路非一朝一夕,还是要多多实践