Google compute engine Can';t打开运行Debian的Google计算引擎上的8080端口

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

我正在尝试运行一个简单的Python http服务器,它使用一个微实例在端口8080上显示“hello world”。我也有4个龙卷风在Nginx后面运行的例子。连接到端口80上的Nginx/Tornado不是问题

我已将端口8080添加到防火墙设置中,并确保端口8080打开并在服务器上侦听,但无论我做什么,我的连接总是被拒绝。我曾尝试使用浏览器、telnet和wget进行连接,但每次连接都被拒绝

下面是
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()

您的网络是否有相应的防火墙规则?按照下面的步骤创建它

  • 转到并单击相应的项目

  • 点击“计算”

  • 点击“网络”

  • 单击相应网络的名称。您可以通过单击“计算引擎”部分下的“VM实例”或使用以下命令查看实例所在的网络:

    gcloud计算实例描述了| grep”网络:“| awk-F/{print$(NF)}”

  • 在防火墙规则部分下,单击“新建”

  • 输入防火墙规则的名称,并在“协议和端口”字段中键入:tcp:8080

  • 保存规则

  • 之后,您应该能够访问HTTP服务器

    否则,您可以使用以下命令尝试查看您的计算机是否在该端口接收SYN TCP数据包:
    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()