我试图找出作为 unix 文件的套接字与作为 ip 和端口的套接字之间的区别。
如果我切换诸如 uwsgi 之类的东西以使用文件而不是端口和 ip,那么如何在浏览器中以 URL 形式访问 uwsgi,因为现在没有为我的 flask 应用程序指定端口。
答案1
由于这是 Google 上关于如何将 flask UWSGI 应用绑定到 unix 套接字的第一个结果,因此这里是标题中问题的答案。
从烧瓶:
app.run(host="unix:///tmp/app.sock")
或者
FLASK_APP=app.py flask run --host=unix:///tmp/app.sock
如果使用 gunicorn:
gunicorn -w 4 package:app --bind unix:/tmp/app.sock
答案2
你可以运行 uwsgi 来监听 TCP/IP 端口,例如uwsgi --http :80
,如果你将它改为监听 Unix 套接字(例如:),uwsgi --socket :8000
那么正如你所说,这仅仅是本地的,没有 web 服务(TCP/IP)暴露给互联网,你必须在 uwsgi 前面放一个像 nginx 这样的 web 服务器作为“代理”,它可以从外界获取 http 请求(参见https://gist.github.com/evildmp/3094281以 django 示例(而非 Flask)
答案3
浏览器不支持向 Unix 套接字发出请求。这是一个功能请求这是由 Chromium 开启的,但是他们回应说不会添加对该用例的支持。