繁体   English   中英

从外部机器访问python Web服务器

[英]Accessing python web server from external machine

我在Ubuntu上运行的python Web服务器的可见性/可访问性遇到问题。 服务器代码如下:

#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8899

#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()

它调用本地使用curl下面的命令作品 -我收到的“Hello World”的答案。

curl {externalIP}:8899

在浏览器中打开地址(即Chrome)失败!

http://{externalIP}:8899/

ufw状态为无效

iptables如下

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8765

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Ubuntu已安装apache2服务器并使用Web浏览器打开html文件,外部ip和端口80在上面的服务器上正常工作...

有什么想法我还能检查吗?

我认为您可能正在监听回送接口,而不是连接到互联网的那个。

指定IP或使用:

server = HTTPServer(('0.0.0.0', PORT_NUMBER), myHandler)

指定监听所有的网络接口。

删除阿帕奇解决了这种情况。 我不知道为什么,因为它应该阻塞端口80,但是在此之后它现在可以工作:

apt-get remove apache2* 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM