0
点赞
收藏
分享

微信扫一扫

Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback

攻城狮Chova 2022-09-09 阅读 66


背景

  1. 前提:我在此服务器上已经通过xampp部署了一个thinkphp的网站,已经占用了80端口。这也就是我后续这个问题产生和解决的原因。
  2. 阿里云的轻量级云服务器(下图),带有镜像为:CentOS 7.3 64 bit
  3. Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback_nginx

  4. ​​此服务器中已安装了对应的.net​​​ core 2.2的runtime等内容,可顺利执行完毕此页操作。
    ​​​linux的.net core的简单示例​​

以上是云服务器。

  1. 在我本机的windows系统中,通过vs2017,​​新建了一个.net​​ core的web项目,然后通过ftp的方式,将其发布到此centos机器的某个有权限的目录下。
  2. Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback_nginx_02

  3. 此时,在centos的目录中,启动此web项目,则会出现如下图的情况。
  4. Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback_云服务_03

  5. 此时,​​此.net​​​ core项目已经启动成功,尽管有上图中红框处的warn。如果使用 wget​​http://localhost:5000​​​ 命令,或者 curl​​http://localhost:5000​​ 命令是可以看到此网站的首页内容的。由此可以证明此网站肯定是已经启动了,可以访问了。
  6. 但是从外网的机器中,比如此时我的windows机器中,通过IP的方式就不可以访问到这个网站。即在浏览器地址栏中输入​​http://x.x.x.x:5000​​ (其中x.x.x.x是我的云服务器的IP地址)提示不可访问此网站,图略。
  7. PS:其中,云服务器的防火墙设置,端口开放都足够多,肯定不会是这方面的问题。

问题描述

想要在外网机器中,通过http://x.x.x.x:5000 (其中x.x.x.x是我的云服务器的IP地址)​​访问此云服务器上的.net​​ core 的网站。

如下图

Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback_nginx_04


该如何操作呢?

查了一些资料,发现有种说法,通过nginx代理的方式,可以正常访问。
我没有找到别人确切可行的方案,但这个我亲自试了,确实成功了。

思路:

  1. 开放此centOS的另一个端口,如81端口,操作略,阿里云服务器的控制台网页里可操作。
  2. 在云服务器上安装一个ngxin,此nginx接受来自81端口的请求,然后转发到本机(这个本机指的就是此centOS云服务器)的5000端口。
  3. 如何成功,则网站可访问,如上图。

实现

首先说明,上述思路亲测可行。

方法如下:

1.nginx随便装一个,修改配置文件/etc/nginx/nginx.conf。

2. nginx增加配置如下图。

Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback_云服务_05


上图中,红框部分为修改,黄框部分为新增。其余不变。

3. 重新启动nginx,命令: nginx -s reload

4. 通过外网的浏览器 x.x.x.x:81 即可成功访问此网站,如下图。

Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback_nginx_06


由此便可解决标题的问题。


举报

相关推荐

0 条评论