Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放;服务器端口开放与关闭

1 问题分析

首先我的这个服务器是在我司云服务器上虚拟出的一个服务器,我在服务器上开启一个flask服务,然后在客户端用Postman发送数据到服务端,请求之后报错:503Forwarding failure,如下:
在这里插入图片描述

[网上查询]503错误(Service Unavailable)(https://blog.csdn.net/chenrushui/article/details/55192766)说是服务不可用状态,主要原因:

  • 服务器或许就是正在维护或者暂停了
  • 服务器cpu占用的频率大导致的(过载)
  • 某些服务器只不过是希望拒绝某些客户端的连接

我遇到这个原因是属于第三种原因,处于安全考虑,新虚拟的Linux服务很多端口都是不对外开放的,因此当我用客户端去访问5000端口的时候,就出现了503错误!

下面介绍如何在linux上开启和关闭指定的端口

2 在Centos上开启和关闭端口

2.1 Centos对外开放指定的端口

1、例如:开放5000端口,返回sucess表示快放端口成功

firewall-cmd --zone=public --add-port=5000/tcp --permanent

2、配置立即生效,返回sucess表示此事外部客户端已经可以访问该端口

firewall-cmd --reload

[root@localhost /HDD/project/mhat]$ firewall-cmd --zone=public --add-port=5000/tcp --permanent
success
[root@localhost /HDD/project/mhat]$ firewall-cmd --reload
success
[root@localhost /HDD/project/mhat]$ python flask_detection.py

如下是客户端请求服务端5000端口之后的正常响应:
在这里插入图片描述

2.2 Centos关闭指定的端口

1、例如:关闭5000端口,返回sucess表示快放端口成功

firewall-cmd --zone=public --remove-port=5000/tcp --permanent

2、配置立即生效,返回sucess表示已经关闭该端口

firewall-cmd --reload

2.3 同时开启很多端口

如果要开放的端口太多,嫌麻烦,只需要关闭防火墙即可,安全性自行评估

systemctl stop firewalld.service

2.4 查看防火墙的状态

firewall-cmd --state

[root@localhost /HDD]$ firewall-cmd --state
running

返回running表示防火墙处于开启状态

2.5 查看监听的端口

2.5.1 查看监听的端口

netstat -lnpt

(base) [root@localhost /HDD/project/mhat]$ netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1283/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1675/master
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      10705/python
tcp6       0      0 :::22                   :::*                    LISTEN      1283/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1675/master
(base) [root@localhost /HDD/project/mhat]$

从监听的端口,可以看到5000端口在运行一个python程序,就是我们在服务器上开启的一个flask服务(python flask_detect.py)

注意:
在Centos中你可能需要先安装netstat,安装命令如下(不知道为啥下载名不是netstat,默默称赞一句FK!!!):

yum install net-tools

2.5.2 查看端口被那个进程占用:

netstat -lnpt |grep 5000

(base) [root@localhost /HDD/project/mhat]$ netstat -lnpt | grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      10705/python

2.5.3 查看进程的详细信息

上面可以看到5000端口,运行的是一个python程序进程,对应的进程PID为:10705,使用如下命令就可以查看进程的详细信息

ps PID

(base) [root@localhost /HDD/project/mhat]$ ps 10705
  PID TTY      STAT   TIME COMMAND
10705 pts/0    S+     0:03 python image_demo_cpu_flask.py ./configs/faster_rcnn/my_faster_rcnn_r50_fpn_1x_coco.py ./13_work_dirs_hat_faster_rcnn/latest.pth --device cpu
(base) [root@localhost /HDD/project/mhat]$

2.5.4 强制终止进程

kill -9 PID

3 在Ubuntu上开启和关闭端口

3.1 查看哪些端口被打开

netstat -anp

3.2 Ubuntu打开指定端口

1、例如:打开5000端口

iptables -A INPUT -ptcp --dport 5000 -j ACCEPT

2、保存设置

service iptables save

3.2 Ubuntu关闭指定端口

1、例如:关闭5000端口

iptables -A OUTPUT -p tcp --dport 5000 -j DROP

2、保存设置

service iptables save

猜你喜欢

转载自blog.csdn.net/weixin_41010198/article/details/106807704