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