前言:使用localhost或本机ip进行测试webapi的文章很多,但这只是在局域网中的使用,作为刚接触webapi的小白尚可,进阶就需要将接口部署到一个可供外网访问的服务器中进行测试,这里笔者记录下使用腾讯云服务器部署webapi的心路历程
服务器:腾讯云轻量应用服务器(免费一个月)
AspNet Core框架:.NET6
IIS:8.0
接口测试工具:Postman10.0.41
一、工具介绍
这是款试用期为1个月的轻量应用服务器,内存带宽硬盘流量作为测试用完全可以,最主要是给了个公网ip,就可以测试外网访问效果了。
二、IIS环境配置
2.1 运行环境检测
首先查看有没有运行环境
如果没有运行环境,我们需要在服务器上下载.NET Core Runtime,下面附上链接。
.NET Downloads (Linux, macOS, and Windows)
点击6进入下面这个界面
下载下来一路安装就可以。
2.2 服务器开启IIS管理
在管理里点击【添加角色和功能】
到选择服务器角色,勾选【Web服务器(IIS)】
然后选择角色服务器,根据需求勾选。(为了避免出现问题,都勾上就可以,反正用不用都先加上没多大坏处(~ ̄▽ ̄)~ )
安装完成之后,打开IIS管理器
2.3 建站
添加应用程序池
添加网站,网站名称随便写,应用程序池选择上一步创建的,物理路径选择发布好的publish文件夹
下面添加ip和端口号很重要,类型中可选http和https,先用http,这里IP地址,下拉有两个,一个是全部未分配,另一个是内网ip
这里要注意几点:
1、腾讯云服务器默认开启了80端口
2、iis有个默认网站是localhost:80
3、这里IP地址如果选择全部未分配,端口选择80,那么不管你物理路径填的哪,都会跳到这个iis内置的网站中去,因为这个http://localhost网站已经指向了这个静态网站了
如果IP地址选择了内网ip,端口不做修改,还是80端口,那么就是访问自己的网站了
目前这种方式和在自己电脑上做测试没什么区别,我们想要实现的功能是
http://公网IP:端口号/
这样,其他电脑才能访问我们的接口
2.3腾讯云服务器
ps:网站=ip(域名)+端口号
而防火墙就是控制访问应用程序(网站)端口的,笔者使用的这款服务器,可以设置端口,来源这块服务器是这样解释的,笔者问了下客服,这里的源ip是指的访问者ip,比如笔者个人电脑(不是云服务器)的ip是172.16.16.10,如果将应用类型http(80)那一栏的来源设置成了172.16.16.10,那我只有我电脑或同样设置了172.16.16.10ip的电脑能访问到这个80端口。所以这里如果没有特殊要求需要屏蔽某些ip,可以默认是0。
然后是增加端口, 笔者之前使用的联通的公网ip,然后通过路由器映射到局域网中的一台电脑上面,在路由器上面需要配置下映射关系,就包括映射到那个局域网中的那个ip上面的那个端口上面,这样访问外网ip(其实笔者使用了域名,域名绑定了这个公网ip)+端口就会被指向局域网中的ip和端口,这里原理是一样的,不过不需要自己再去配置对应的ip和端口号配置,直接配置(开放端口号)就可以。
绑定下公网ip和开放的端口号
不管用,哈哈,如果将ip换成全部未分配,就可以,postman中填写公网ip就可以正常访问。
最好是选择“全部未分配”,用这个选项时,服务器本机,在IE浏览器地址栏输入http://localhosts/ 或127.0.0.1 可以打开本机架设的网站的主页,也可以输入内网IP地址打开内网的网站,做端口映射后,还可以从外网打开网站;就是说,选择这个选项,可以用所有的方法打开网站;
如果选择服务器的内网IP地址,就可以在局域网内部的其他电脑上输入服务器内网IP地址打开网站,不能在服务器本机上输入127.0.0.1打开网站,做端口映射后,也可以从外网打开网站;如果设置为外网IP地址,就只能从外网打开网站,或者从内网以域名方式打开网站(需要端口映射)。不能从服务器本机上以127.0.0.1或内网IP地址方式打开网站。 意思就是设置为全部未分配就可以了。
iis在添加网站时,需要将网站内容绑定到一个ip上面,这个ip没什么限制,唯一一点要求就是能访问到这个网站的内容,例如本机测试就可以将ip设置成本机ip、localhost或127.0.0.1,局域网就需要将ip设置成本机ip(如果设置成localhost或127.0.0.1,其他电脑在局域网中找不到这个ip地址),如果要求外网能访问到,就需要做端口映射了。记住,最重要的是要让访问者找到你这个ip地址和端口号。
问题:那么云服务器这里为什么设置成全部未分配,然后我们在其他电脑上面通过postman访问就可以?为什么直接绑定公网ip不可以访问呢?
答:这里未分配里面代表了本机所有ip,包括了内网ip,而内网ip被外网ip进行了映射,所以这里未分配情况下,通过外网访问其实是访问的这个内网ip
2.4 总结:
1、腾讯云服务器默认做了映射,即公网ip映射内网ip,并且端口也在防火墙那里做了映射(一一对应)。
2、外网访问的是公网ip+端口,通过映射就相当于访问的内网ip+端口,将网站绑定到内网ip上面就可以,至于是选择全部未绑定还是选择内网ip,由你具体需求决定。
3、我们查找iisip绑定资料时往往会看到这样字眼,"只有指定IP可以访问网站",
这里指定ip就是我们需要绑定的,也是我们需要经常使用去访问网站的,笔者之前陷入一个怪圈,访问人不是我,是你,是他、她吗,那这个ip不应该填我、你、他、她的吗?这里其实是相对来说的,iis中网站要绑定的ip和网站是相对的,只有这个ip可以访问这个网站,而我们访问,需要使用工具的,这个工具就是iis中设置的这个ip,并不是我们自己ip去访问这个网站,我们是使用这个绑定ip去访问,就好比baidu.com这个域名,我们是使用baidu.com去访问它绑定的网站,并不是我们的电脑ip去访问百度网站的内容。
这里只是http通过公网ip做了绑定,并没有使用域名,笔者之前使用的联通的公网+腾讯申请的域名,在iis中的绑定有点不通,后期再测试。
三、引用文献
3.1 .NET Code WebAPI发布windows服务器部署_Sr-浮生的博客-CSDN博客_webapi发布