关于 Django+Nginx+uWSGI 部署问题

2018-05-14 20:42:48 +08:00
 xiaoshi657

配置文件如下:

[uwsgi]
socket=外网 ip:端口(使用 nginx 连接时,使用 socket )
http=外网 ip:端口(直接做 web 服务器,使用 http )
chdir=项目根目录
wsgi-file=项目中 wsgi.py 文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

为什么

使用 nginx 连接时,使用 socket,直接做 web 服务器,使用 http

使用 nginx 的时候,用 socket 原因是什么呢, 可以用 http 吗

4104 次点击
所在节点    Python
14 条回复
julyclyde
2018-05-14 22:10:11 +08:00
可以
twor
2018-05-14 22:48:25 +08:00
新手勉强回答一下

socket=外网 ip:端口(使用 nginx 连接时,使用 socket )

-- 也可以 http-socket 吧。 我配置都是用 socket file,感觉上效率更高

http=外网 ip:端口(直接做 web 服务器,使用 http )

-- 直接把 uWSGI 作为 http 服务器,不需要 nginx 了


参考

http://uwsgi-docs.readthedocs.io/en/latest/HTTP.html?highlight=http
patx
2018-05-14 22:58:34 +08:00
unix socket 好一点吧,nginx 和 uwsgi 进程间直接通信
http, http socket 效率低一点,为了安全,中间会有一些校验和路由
FindHao
2018-05-14 22:58:44 +08:00
我们的 uWSGI 是通过网络端口暴露出来的,但是由于后面我们将使用 nginx 来处理实际的 client 连接,然后传递给 uwsgi,而由于这些操作都是在一个机器上运行的,因此这里我们改成 socket 的模式更安全快速。我们指定 socket 文件是当前项目目录下的 myproject.sock。
https://www.findhao.net/easycoding/2218
ybping
2018-05-14 23:16:15 +08:00
socket 性能更好
XiaoxiaoPu
2018-05-15 01:16:11 +08:00
unix socket 确实性能好一点,但是你们确实不用考虑多机部署?
ericls
2018-05-15 03:00:26 +08:00
@XiaoxiaoPu 多机部署就多个 nginx 咯?
geeklian
2018-05-15 07:59:22 +08:00
socket 和 http 肯定不一样啦...

socket 传递的是二进制数据包,然后 nginx 将写在 uwsg_params 的信息当环境变量传递给 uwsgi。

http 传递的超文本数据包,nginx 将原本的 http 信息和 http_proxy 配置的信息糅合在一起重新打包 http,传递给 uwsgi。

实际使用上的区别,比如获取客户端的 ip 地址,socket 通过 REMOTE_ADDR,http 就要通过 nginx 里配置定义的 x_forwared-for 之类的了。

至于性能,其实没太大区别。理论上 socket 比 http 强,但业务逻辑和 orm 使用还是影响性能的大头。

我喜欢用 http,因为内网 nginx 和 django+uwsgi 不在一个服务器上,配置 http 可以直接连 app 服务器测试。备机防火墙打掉到 nginx 的连接,就可以直接当测试机用了。当然这是在管理很随意的非互联网企业的操作。
ycz0926
2018-05-15 08:59:12 +08:00
你是要做成分布式的?
XiaoxiaoPu
2018-05-15 13:25:22 +08:00
@ericls 一个机器宕机了靠 DNS 来切换么?那样生效太慢了啊
234747005
2018-05-15 16:07:43 +08:00
换做是我就会考虑直接用 haproxy 做 tcp 代理,放弃用 nginx。
RicardoScofileld
2018-05-15 18:30:53 +08:00
主要 nginx 负载均衡,uwsgi 一个挂了,还能分配到其他上
ericls
2018-05-16 00:43:31 +08:00
@XiaoxiaoPu load balancer
XiaoxiaoPu
2018-05-16 01:05:31 +08:00
@ericls 那不如 load balancer 直连 uwsgi

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX