Nginx配合uGIGI和Django用作应用程序网关

本文介绍了如何将NGINX或NGINX Plus用作uWSGI和Django的应用程序网关。

  • 介绍
  • 关于uWSGI和Django
  • 配置NGINX和NGINX Plus以与uWSGI和Django一起使用
  • 结论
  • 资源资源

介绍

NGINX是高性能,可伸缩,安全和可靠的Web服务器和反向代理。NGINX支持所有主要的Web加速技术来管理HTTP连接和流量。多年来,NGINX功能(如负载平衡,SSL终止,连接和请求策略,静态内容卸载以及内容缓存)已帮助NGINX用户快速有效地构建可靠,快速的网站。

NGINX还可以充当安全的应用程序网关,提供许多专用的内置接口,以将流量从用户传递到应用程序。在这方面,NGINX不仅可以将HTTP和HTTPS流量代理到启用HTTP的应用程序容器,还可以通过在FastCGI,Memcached等模块中实现的优化的应用程序网关接口直接与大多数流行的轻量级应用程序服务器和Web框架进行通信。,scgi和uwsgi。

大多数常用的应用程序容器具有具有某些路由功能的嵌入式外部HTTP接口,但是将NGINX用作应用程序网关的一个重要原因是,它为HTTP连接管理,负载平衡,内容缓存和流量提供了一个一体化的解决方案。安全。应用程序后端安全地位于NGINX后面,以提供更好的可伸缩性和性能。将应用程序实例群集在NGINX后面以构建高可用性应用程序也非常容易。

关于uWSGI和Django

关于“专用接口”的几句话。HTTP一直有用,但从未针对现代的轻量级应用程序部署方案进行过优化。近年来,已开发出许多用于各种应用程序框架和应用程序容器的标准化接口。这些接口之一是Web服务器网关接口(WSGI),它是Web服务器/代理和基于Python的应用程序之间的接口。

提供uwsgi协议(它自己的WSGI协议实现)的最常用的应用程序服务器之一是uWSGI应用程序服务器容器。

除此之外,uWSGI应用程序服务器还支持HTTP,FastCGI和SCGI –建议使用uwsgi协议作为与应用程序进行通讯的最快方式。

配置NGINX和NGINX Plus以与uWSGI和Django一起使用

本文档提供了一个示例,说明如何配置NGINX和NGINX Plus与uWSGI服务器和Python开发环境一起使用。

NGINX 0.8.40和更高版本(以及NGINX Plus的所有发行版)都提供了本机支持,可通过uwsgi协议将流量从用户传递到Python应用程序。如果您从我们的官方资源库或从客户门户网站下载NGINX开源二进制文件或源代码,或从客户门户网站下载NGINX Plus,则无需执行任何操作即可启用对uwsgi协议的支持-默认情况下,NGINX和NGINX Plus支持uswgi。

配置uWSGI应用程序容器本身不在本文档的讨论范围之内;有关更多信息,请参阅出色的Python / WSGI应用程序快速入门。

Django可能是最常用的Python Web框架,因此,为简单起见,该示例为Python应用程序使用了基于Django的设置。在Django文档提供了有关如何配置一个Django环境的大量信息。

仅出于说明目的,这是您可以使用Django调用uWSGI服务器的一种方式:

# /usr/local/sbin/uwsgi \--chdir=/var/django/projects/myapp \--module=myapp.wsgi:application \--env DJANGO_SETTINGS_MODULE=myapp.settings \--master --pidfile=/usr/local/var/run/uwsgi/project-master.pid \--socket=127.0.0.1:29000 \--processes=5 \--uid=505 --gid=505 \--harakiri=20 \--max-requests=5000 \--vacuum \--daemonize=/usr/local/var/log/uwsgi/myapp.log

有了这些选项后,以下是用于Django项目的NGINX示例配置:

http {# ...upstream django {server 127.0.0.1:29000;}server {listen 80;server_name myapp.example.com;root /var/www/myapp/html;location / {index index.html;}location /static/  {alias /var/django/projects/myapp/static/;}location /main {include /etc/nginx/uwsgi_params;uwsgi_pass django;uwsgi_param Host $host;uwsgi_param X-Real-IP $remote_addr;uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;}}
}

请注意,该配置定义了一个名为django的上游。组中服务器上的端口号29000与uWSGI服务器绑定的端口号匹配,如socketsample uwsgi命令中的参数所指定。

静态内容的服务已卸载到NGINX或NGINX Plus,后者直接从/ var / django / projects / myapp / static提供服务。代理到/ main处的应用程序的流量,并将其从HTTP桥接到uwsgi协议,并传递到在uWSGI应用程序容器中运行的Django应用程序。

结论

轻巧的异构应用程序环境正成为构建和部署现代Web应用程序的一种越来越流行的方式。诸如uwsgi和FastCGI之类的更新的标准化应用程序接口协议可实现用户与应用程序之间的更快通信。

在应用程序容器的前面使用NGINX和NGINX Plus已成为一种使应用程序摆脱HTTP流量管理负担,保护应用程序免受用户流量,恶意行为和拒绝服务(DoS)意外高峰的常见方法。攻击等等。与实际应用程序解除捆绑的外部HTTP流量使开发人员可以完全专注于应用程序逻辑,而将Web加速和基本HTTP流量安全任务留给NGINX或NGINX Plus。

##资源

  • uWSGI项目文档中的NGINX 支持
  • 如何在Django项目文档中将Django与uWSGI一起使用

Nginx配合uGIGI和Django用作应用程序网关相关推荐

  1. python开发微信小程序-Django微信小程序后台开发教程的实现

    1 申请小程序,创建hello world小程序 2 添加交互框和按钮 index. wxml cal {{ result }} index.wxss /**index.wxss**/ .input ...

  2. ubuntu NGINX uwsgi https 部署Django 遇到的问题

    搞了3天终于把Django成功部署到Ubuntu,记录一下: 引用来自泡泡茶壶: Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程 前提说明: Django作为小程序的后端 ...

  3. Django微信小程序后台开发教程

    Django微信小程序后台开发教程 1 申请小程序,创建hello world小程序 2 添加交互框和按钮 3 在服务器配置hello django 4 实现计算器接口 5 配置服务器将后端与微信小程 ...

  4. nginx中给目录增加密码保护实现程序

    一款nginx中给目录增加密码保护实现程序,可以有效的保护一些目录不被访问,有需要的朋友可参考一下. 了防止一些可能出现存在漏洞的后台脚本暴露,使用验证的方式保护这些文件所在的目录 使用apache的 ...

  5. NGINX配合FASTDFS使用的安装与配置及编译遇到错误:cc1: all warnings being treated as errors

    NGINX配合FASTDFS使用的安装与配置及编译遇到错误:cc1: all warnings being treated as errors 安装所需要的文件可在这里下载:https://githu ...

  6. django创建应用程序_使用Django创建基于机器学习的Web应用程序

    django创建应用程序 This article is for readers who want to deploy their Machine Learning model as a Web Ap ...

  7. 下列可作为python变量名的是_以下选项中能用作Python程序变量名的是____________。(2.5分)_学小易找答案...

    [单选题]以下选项中能用作Python程序变量名的是____________.(2.5分) [其它]4.2.2.12 Packet Tracer - Configuring Extended ACLs ...

  8. 12.Azure应用程序网关(下)

    接下来我再把标准应用程序网关升级到WEB应用程序防火墙 Web 应用程序防火墙 (WAF) 是应用程序网关的功能,可以对 Web 应用程序进行集中保护,避免其受到常见的***和漏洞伤害. 无需修改后端 ...

  9. 10.Azure应用程序网关(上)

    应用程序网关这个功能主要又分2个子功能,一个叫"标准应用程序网关":一个叫"WEB应用程序防火墙(WAF)"."WEB应用程序防火墙(WAF)&quo ...

最新文章

  1. 基于Spatial CNN的车道线检测和交通场景理解
  2. 【MM模块】 Cash Discounts 现金折扣
  3. 如何制作LINUX的patch文件及如何打patch
  4. Codepen 每日精选(2018-4-22)
  5. BufferedWriter_字符缓冲输出流
  6. 接入淘宝API(PHP版本)
  7. 拓扑排序 确定比赛名次
  8. 【处理手记】Configuration system failed to initialize异常的另类原因
  9. 消息队列面试 - 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?
  10. 【路径规划】基于matlab人工势场算法多机器人协同编队避障路径规划【含Matlab源码 1192期】
  11. 如何获取html的页面宽度和高度,js获取屏幕,浏览器及网页的宽度和高度
  12. python 二值化细化_Python - 图像的细化(骨架抽取)
  13. 【数智化案例展】某人民医院——智慧医疗大数据建设
  14. jupyter 内核似乎挂掉了 它很快将自动重启---解决方案
  15. Js 字符串属性及方法
  16. 设置WebStorm背景图片
  17. 如何让google,baidu,Yahoo收录你的网站
  18. 《大数据原理与实践》第4次公开课:Application
  19. 20230210组会总结
  20. 使用CocosCreator完成2048小游戏demo

热门文章

  1. asp.net 3.5 知识点
  2. 慎用PHP $_REQUEST数组
  3. 【AI视野·今日CV 计算机视觉论文速览 第237期】Thu, 30 Sep 2021
  4. mysql 5 安装过程
  5. 02 掌握变量的定义和使用方法 1214
  6. dj鲜生-31-用户中心-功能需求分析
  7. django-分页自带的分页-自定义分页
  8. python-模拟property
  9. java期末项目实验答辩毕业设计工程项目源码
  10. 荣耀发布了全球首款 4800 万像素手机,并推出 YOYO 智能音箱...