Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放;服务器端口开放与关闭
文章目录:
1 问题分析
2 在Centos上开启和关闭端口
2.1 Centos对外开放指定的端口
2.2 Centos关闭指定的端口
2.3 同时开启很多端口
2.4 查看防火墙的状态
2.5 查看监听的端口
2.5.1 查看监听的端口
2.5.2 查看端口被那个进程占用:
2.5.3 查看进程的详细信息
2.5.4 强制终止进程
3 在Ubuntu上开启和关闭端口
3.1 查看哪些端口被打开
3.2 Ubuntu打开指定端口
3.2 Ubuntu关闭指定端口
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