请选择 进入手机版|继续访问电脑版
发新帖

关于 Django+Nginx+uWSGI 部署问题

[复制链接]
5298 14

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
配置文件如下:
[uwsgi]socket=外网 ip:端口(使用 nginx 连接时,使用 socket )http=外网 ip:端口(直接做 web 服务器,使用 http )chdir=项目根目录wsgi-file=项目中 wsgi.py 文件的目录,相对于项目根目录processes=4threads=2master=Truepidfile=uwsgi.piddaemonize=uswgi.log为什么
使用 nginx 连接时,使用 socket,直接做 web 服务器,使用 http
使用 nginx 的时候,用 socket 原因是什么呢, 可以用 http 吗

举报 使用道具

回复

精彩评论14

julyclyde  注册会员  发表于 2018-5-16 17:35:00 | 显示全部楼层
可以

举报 使用道具

回复
twor  新手上路  发表于 2018-5-16 17:40:02 | 显示全部楼层
新手勉强回答一下

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-5-16 18:12:29 | 显示全部楼层
unix socket 好一点吧,nginx 和 uwsgi 进程间直接通信
http, http socket 效率低一点,为了安全,中间会有一些校验和路由

举报 使用道具

回复
findhao  新手上路  发表于 2018-5-16 18:13:12 | 显示全部楼层
我们的 uWSGI 是通过网络端口暴露出来的,但是由于后面我们将使用 nginx 来处理实际的 client 连接,然后传递给 uwsgi,而由于这些操作都是在一个机器上运行的,因此这里我们改成 socket 的模式更安全快速。我们指定 socket 文件是当前项目目录下的 myproject.sock。
https://www.findhao.net/easycoding/2218

举报 使用道具

回复
ybping  新手上路  发表于 2018-5-16 18:19:27 | 显示全部楼层
socket 性能更好

举报 使用道具

回复
xiaoxiaopu  新手上路  发表于 2018-5-16 18:37:45 | 显示全部楼层
unix socket 确实性能好一点,但是你们确实不用考虑多机部署?

举报 使用道具

回复
ericls  新手上路  发表于 2018-5-16 18:39:15 | 显示全部楼层
@XiaoxiaoPu 多机部署就多个 nginx 咯?

举报 使用道具

回复
geeklian  新手上路  发表于 2018-5-16 19:00:15 | 显示全部楼层
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-5-16 19:11:05 | 显示全部楼层
你是要做成分布式的?

举报 使用道具

回复
xiaoxiaopu  新手上路  发表于 2018-5-16 19:27:32 | 显示全部楼层
@ericls 一个机器宕机了靠 DNS 来切换么?那样生效太慢了啊

举报 使用道具

回复
234747005  新手上路  发表于 2018-5-16 19:31:19 | 显示全部楼层
换做是我就会考虑直接用 haproxy 做 tcp 代理,放弃用 nginx。

举报 使用道具

回复
ricardoscofilel  新手上路  发表于 2018-5-16 19:38:50 | 显示全部楼层
主要 nginx 负载均衡,uwsgi 一个挂了,还能分配到其他上

举报 使用道具

回复
ericls  新手上路  发表于 2018-5-16 19:40:29 | 显示全部楼层
@XiaoxiaoPu load balancer

举报 使用道具

回复
xiaoxiaopu  新手上路  发表于 2018-5-16 20:01:19 | 显示全部楼层
@ericls 那不如 load balancer 直连 uwsgi

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表