我已经在计算机A上安装了Jupyter Notebook服务器,其配置如下:
c.NotebookApp.certfile = '.jupyter/mycert.pem'
c.NotebookApp.ip = 'MY_IP_ADDRESS'
c.NotebookApp.keyfile = '.jupyter/mykey.key'
c.NotebookApp.notebook_dir = 'Dropbox/GitHub'
c.NotebookApp.password = 'MY_HASHED_PASSWORD'
c.NotebookApp.port = 8888
服务器启动时,计算机B可以通过https://MY_IP_ADDRESS:8888
到达此服务器。
但是计算机A无法以任何形式到达自身
# ERR_CONNECTION_REFUSED
https://localhost:8888/
https://127.0.0.1:8888/
# ERR_CONNECTION_TIMED_OUT
https://MY_IP_ADDRESS:8888/
值得一提的是,当我注释掉分配IP地址的行时,localhost
和127.0.0.1
可以正常工作,但是我无法从外部(计算机B)进行连接>
我尝试过切换端口,切换浏览器,在/etc/hosts
内配置/etc/resolv.conf
和~/.jupyter/jupyter_notebook_config.py
以及其他一些选项
但它们似乎都不起作用
任何建议将不胜感激。
经过进一步的调查,结果证明这与jupyter笔记本无关。我运行了一个带有以下代码段的简单python HTTP服务器:
import sys
from http.server import SimpleHTTPRequestHandler
import http.server
def test(HandlerClass=SimpleHTTPRequestHandler,
ServerClass=http.server.HTTPServer):
protocol = "HTTP/1.0"
host = 'MY_IP_ADDRESS'
port = 8888
if len(sys.argv) > 1:
arg = sys.argv[1]
if ':' in arg:
host, port = arg.split(':')
port = int(port)
else:
try:
port = int(sys.argv[1])
except:
host = sys.argv[1]
server_address = (host, port)
HandlerClass.protocol_version = protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print("Serving HTTP on", sa[0], "port", sa[1], "...")
httpd.serve_forever()
if __name__ == "__main__":
test()
结果相同。我猜这实际上是正常现象,但不是我的偏爱:(
因此导致两种情况:
用于自连接
用于其他客户端连接
我添加了一些新标签,希望任何人对此都有提示> << / p>