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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章