Google compute engine Can';t打开运行Debian的Google计算引擎上的8080端口
我正在尝试运行一个简单的Python http服务器,它使用一个微实例在端口8080上显示“hello world”。我也有4个龙卷风在Nginx后面运行的例子。连接到端口80上的Nginx/Tornado不是问题 我已将端口8080添加到防火墙设置中,并确保端口8080打开并在服务器上侦听,但无论我做什么,我的连接总是被拒绝。我曾尝试使用浏览器、telnet和wget进行连接,但每次连接都被拒绝 下面是Google compute engine Can';t打开运行Debian的Google计算引擎上的8080端口,google-compute-engine,Google Compute Engine,我正在尝试运行一个简单的Python http服务器,它使用一个微实例在端口8080上显示“hello world”。我也有4个龙卷风在Nginx后面运行的例子。连接到端口80上的Nginx/Tornado不是问题 我已将端口8080添加到防火墙设置中,并确保端口8080打开并在服务器上侦听,但无论我做什么,我的连接总是被拒绝。我曾尝试使用浏览器、telnet和wget进行连接,但每次连接都被拒绝 下面是netstat-an | grep“LISTEN” 这是我的iptables列表 Chain
netstat-an | grep“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()
您的网络是否有相应的防火墙规则?按照下面的步骤创建它
gcloud计算实例描述了| grep”网络:“| awk-F/{print$(NF)}”
sudo tcpdump-i eth0 port 8080
希望能有所帮助我仍然不确定出了什么问题,但我删除了我的实例和网络,然后创建了新的实例和网络。新实例和网络似乎工作正常,因此我只能假设在使用旧网络时出现了问题,因为新网络似乎没有相同的问题。创建网络规则时,可能会出现一些问题。描述网络规则并创建相关元标记时,请确保VMs实例包含相同的元标记,以便所需的通信量将重定向到计算机。确保添加正确的端口。 上面的答案是“tcp:80”,但如果您的服务器在另一个端口上运行,则此选项将不起作用。
这可能就是为什么在GCE Web Console>网络>防火墙规则>编辑规则、删除目标标记并应用时,它不适用于其他人的原因
GL您好,谢谢您的回复。我已经将tcp:8080添加到我的防火墙中。当我向:8080发送请求时,tcpdump没有收到任何数据包。嗨,我解决的问题是:除了tcp:8080之外,我还必须添加udp:8080(“协议和端口”变成tcp:8080;udp:8080)。重要!从计算引擎打开链接将打开httpS!你想删除它并使用HTTP(在开发…和使用端口8080等…)谢谢你解决了它,但为了帮助下一个人它没有“计算”它的VPC网络->防火墙规则。删除我之前添加的目标标记对我来说是个好办法。这里有一些很好的说明,我错过了一件事,因为在现场自动完成,是入口源ip末端的
/0
。当我把它添加到'0.0.0.0'中时,它就起作用了。
#!/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()