[英]Can't open port 8080 on Google Compute Engine running Debian
我正在嘗試運行一個簡單的 Python http 服務器,它使用微型實例在端口 8080 上顯示“hello world”。 我還有 4 個 Tornado 實例在 Nginx 后面運行。在端口 80 上連接到 Nginx/Tornado 不是問題。
我已將端口 8080 添加到我的防火牆設置,並確保端口 8080 已打開並在服務器上偵聽,但無論我做什么,我的連接總是被拒絕。 我嘗試使用瀏覽器、te.net 和 wget 進行連接,但每次連接都被拒絕。
這里是output netstat -an | grep "LISTEN "
netstat -an | grep "LISTEN "
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8002 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8003 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::8000 :::* LISTEN
tcp6 0 0 :::8001 :::* LISTEN
tcp6 0 0 :::8002 :::* LISTEN
tcp6 0 0 :::8003 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
這是我的 iptables 列表
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
這是我正在使用的 Python 腳本:
#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
PORT_NUMBER = 8080
#This class will handles any incoming request from
#the browser
class myHandler(BaseHTTPRequestHandler):
#Handler for the GET requests
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
# Send the html message
self.wfile.write("Hello World!")
return
try:
#Create a web server and define the handler to manage the
#incoming request
server = HTTPServer(('', PORT_NUMBER), myHandler)
print 'Started httpserver on port ' , PORT_NUMBER
#Wait forever for incoming htto requests
server.serve_forever()
except KeyboardInterrupt:
print '^C received, shutting down the web server'
server.socket.close()
您的網絡是否具有相應的防火牆規則? 按照以下步驟創建它。
轉到開發人員控制台 ,然后單擊相應的項目。
點擊'計算'
點擊“網絡”
單擊相應網絡的名稱。 您可以在“計算引擎”部分下單擊“VM實例”或使用以下命令查看您的實例所在的網絡:
gcloud compute instances describe <instance> | grep "network:" | awk -F/ '{print $(NF)}'
在“防火牆規則”部分下,單擊“新建”
輸入防火牆規則的名稱,並在“協議和端口”字段中輸入:tcp:8080
保存規則
之后,您應該能夠訪問您的HTTP服務器。
否則,您可以嘗試使用以下命令查看您的計算機是否在該端口中收到SYN TCP數據包: sudo tcpdump -i eth0 port 8080
希望能幫助到你
在GCE Web控制台>網絡>防火牆規則>編輯您的規則,刪除目標標簽並應用。
GL
仍然不確定出了什么問題,但我刪除了我的實例和網絡,然后創建了新的。 新實例和網絡似乎工作正常,所以我只能假設在使用舊網絡時出現問題,因為新網絡似乎沒有同樣的問題。
您創建網絡規則時可能會出現問題。 描述網絡規則並創建相關的MetaTag時,請確保VM實例包含相同的MetaTag,因此所需的流量將重定向到計算機。
確保添加正確的端口。 上面的答案陳述“tcp:80”,但如果你的服務器在另一個端口上運行,這將不起作用。 這可能是它不為其他人工作的原因
在 GCE Web 控制台中,轉到網絡 > 防火牆規則 > 創建防火牆規則,然后
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.