Nginx介绍

简介:

  • Nginx是由伊戈尔.塞索耶夫开发的,在04年10月开源的一款高性能HTTP和反向代理服务器。
  • 因为它的稳定性好,功能丰富,有示例配置文件和较低的系统资源消耗而闻名
  • 同时也是一款轻量级的Web服务器、反向代理服务器、和电子邮件代理服务器

官网:

特点:

  Nginx是一款高性能的Web和反向代理服务器。具有占用内存少,并发能力强的优势

  在同类型的网页服务器中表现十分优秀。具有反向代理、负载均衡、管理静态文件等功能。默认单台连接数5万

  • Nginx相比Apache使用资源更少,支持更多的并发连接体现出更高的效率,能够支持高达5万个并发连接数的响应
  • Nginx既可以在内部直接支持Redis和PHP,也可支持作为HTTP代理服务器对外进行服务,Nginx使用C编写不论是系统资源开销还是CPU使用效率都处理的非常优秀
  • Nginx安装简单、配置文件简洁、Bug少、Nginx启动容易,且几乎可以做到7 * 24小时不间断运行,即使运行数个月也不需要重新启动,还可以在不间断服务的情况下进行软件版本的升级

Nginx原理

工作原理:[正向代理:隐藏了用户的细节;反向代理:隐藏了服务器的细节]

  Nginx做HTTP服务器如蓝线所示,直接对接的是资源;

  Nginx做反向代理服务器如绿线所示,对接的是另外的服务器,Nginx只是做请求的转发处理

  

工作流程:

  • 开发模式

    浏览器(chrome) <=> 开发服务器(Flask WSGI Server/runserver) <=> Python程序(Flask) <=> 数据库(MySQL)

  • 生产模式

    浏览器(chrome) <=> 反向代理服务器(Nginx) <=> WSGI服务器(uWSGI) <=> Python程序(Flask) <=> 数据库(MySQL)

  • 工作流程:

   用户的请求访问到Nginx上面,Nginx会对后面的业务做负载均衡,反向代理。其后面可能会有多个python代码服务与其对接

   Python程序是不能直接在Nginx执行的,所有需要我们的Python程序在WSGI SERVER容器中去完成执行的,

   执行完后返回响应交个Nginx,执行完的python程序交个Nginx后,再由Nginx去返回给我们的客户端去响应

                    / WSGI SERVER 1    <======>    Python(Flask app)   <====> 数据库(MySQL)
client <----> Nginx - WSGI SERVER 2    <======>    Python(Flask app)   <====> 数据库(MySQL)
                    \ WSGI SERVER 3    <======>    Python(Flask app)   <====> 数据库(MySQL)

环境迁移:

  • pip freeze > requirements.txt 将当前项目所使用的依赖包列表(包名及版本号)保存到requirements.txt中

  • pip install -r requirements.txt 安装 requirements.txt 中所列举的依赖包

Nginx使用

安装:

  • 包管理工具安装

    • 去官网将所使用依赖添加到包管理工具中
    • 更新包管理工具资源
    • 使用包管理工具安装
  • 安装步骤:http://www.nginx.cn/doc/index.html参考
    • 下载公钥:

      • cd doc  : 进入到doc目录下
      • mkdir pgp_key   : 创建一个pgp_key文件
      • wget http://nginx.org/keys/nginx_signing.key  : 下载公钥
    • 添加元信息
      • sudo vim /etc/apt/sources.list   :打开/etc/apt/sources.list文件并编辑,

        • 将如下两行内容添加到打开的文件中末行(xenial是对应系统版本名字)
        • deb http://nginx.org/packages/ubuntu/ xenial nginx
        • deb-src http://nginx.org/packages/ubuntu/ xenial nginx
      • sudo apt update  :更新源信息
    • 添加Nginx源为信任
      • sudo apt-key add nginx_signing_key
    • 安装nginx 
      • sudo apt install nginx

控制:

  • 启动nginx:

    • sudo nginx
    • nginx启动后会有两个进程:master process(主进程)和worker process(从进程)
    • 杀死从进程后,主进程会自动分配一个新的从进程。
    • 杀死主进程后,如果从进程没有工作任务,会和主进程一起杀死
  • 查看nginx信息:
    • ps -ef | grep nginx (查看nginx进程状态)
    • nginx -v  (显示nginx的版本信息)
    • nginx -V  (显示nginx构建过程中的所有参数配置)
  • 控制nginx:
    • nginx -s signal
    • sudo nginx -s stop:  快速关闭
    • sudo nginx -s quit:   优雅关闭[推荐使用]
    • sudo nginx -s reload:重新加载配置
  • 通过系统命令控制nginx
    • systemctl status nginx: 查看nginx状态
    • systemctl start nginx:   启动nginx服务
    • systemctl stop nginx:   关闭nginx服务
    • systemctl enable nginx:设置开机自启
    • systemctl disable nginx:禁止开机自启
    • 不建议使用,nginx会加载配置文件,这种方式不能控制配置文件,容易出现未知错误

配置文件

  Nginx配置文件包含指定指令控制的模块。指令分为简单指令和块指令。

  一个简单指令由名称和参数组成,以空格分隔,并以分号结尾

  一个块指令和简单指令具有相同的结构,但不是以分号结束,而是以一个大括号包围的一堆附 加指令结束。

  如果一个大括号内可以有其他的指令,它就被称为一个上下文,比如(events,http,server,location)

  • 指令

    • nginx -t:不运行,仅测试配置文件
    • nginx -c configpath 从指定路径加载配置文件
    • nginx -t -c configpath 测试指定配置文件

项目部署

Nginx

   Django框架中自带的开发者服务器runserver虽然功能健壮,但性能是比较低仅适用于开发环境。

  在真实部署中不会像django中runserver那样使用单一服务器。而是使用Nginx做HTTP服务器处理静态资源,

  或者做反向代理和uWSGI(HTTP服务器)、gunicorn(HTTP服务器)对接。也可以做邮件服务器或流媒体服务器 

uWSGI

gunicorn

部署 --- Nginx的更多相关文章

  1. debian完整部署 Nginx + uWSGI + Django

    手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...

  2. debian7下部署nginx服务器

    笔者是在vmware中的Debian7下部署nginx服务器,采用离线部署方式.过程如下: 1.准备好需要的离线安装包 nginx-1.6.2.tar.gz,pcre-8.34.tar.gz,open ...

  3. 在Docker下部署Nginx

    在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...

  4. 自动部署Nginx和nfs并架设Nginx集群脚本

    本人经过多次尝试,简单完成了自动部署Nginx和nfs脚本,并且能够自动部署web反向代理集群,下面详细的阐述一下本人的思路.(以下脚本本人处于初学阶段,写的并不是很完善,所以需要后期进行整理和修正, ...

  5. Linux中以单容器部署Nginx+ASP.NET Core

    引言 正如前文提到的,强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器,本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程.   Ng ...

  6. Windows Server 2008 R2 Enterprise x64 部署 nginx、tomcat、mysql

    部署nginx nginx主要做反向代理用,可以单独部署到其它机器上,这里nginx和tomcat部署在同一台机器上. 下载nginx-1.14.1.zip,并解压到目标目录,打开cmd进入到解压后的 ...

  7. windows10下面部署nginx(解决文件名中文乱码问题)

    由于开发需要,我们总是需要先在windows环境下面部署项目进行测试,通过之后才会移植到linux系统进行测试部署. 本篇文章会介绍一下windows终端下面部署nginx WEB服务的一些步骤流程, ...

  8. 【原创】大数据基础之Mesos+Marathon+Docker部署nginx

    一 安装 安装docker:https://www.cnblogs.com/barneywill/p/10343091.html安装mesos:https://www.cnblogs.com/barn ...

  9. centos7 下 安装部署nginx

    centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...

  10. Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken

    前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)--技术流ken>,<Ansible常用模块介绍及使用(二)--技术流ken><Ansible剧本介绍及 ...

随机推荐

  1. windows builder里面的可伸缩面板

    使用 org.eclipse.wb.core.controls.flyout.FlyoutControlComposite.FlyoutControlComposite类 构造方法中传入的prefer ...

  2. 2019牛客暑期多校训练营(第五场)F maximum clique 1 二分图求最大独立集

    https://ac.nowcoder.com/acm/contest/885/F #include <bits/stdc++.h> //CLOCKS_PER_SEC #define se ...

  3. Win10远程桌面 报错:CredSSP加密Oracle修正……

    解决方法: 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击. 参考: https://blog.c ...

  4. django -过滤器的使用

    前情提要: 最近工作中用到django 中的  自定制过滤器的内容, 再此 复习一波过滤器和自定制 过滤器的内容 自定制过滤器   1.在settings中的INSTALLED_APPS配置当前app ...

  5. Laravel 5.8: Automatic Policy Resolution

    Laravel 5.8: Automatic Policy Resolution March 26, 2019 One of the new features in Laravel 5.8 allow ...

  6. 049_指定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录

    #!/bin/bash[ ! -d /data ] && mkdir /data  #确保有此目录[ -z $1 ] && exit   #为空不需要打包if [ -d ...

  7. C# 窗体 类似framest 左侧点击右侧显示 左侧菜单右侧显示

    首先托一个splitContainer调节大小位置 然后进行再新创建一个窗体名为add 在左侧拖入button按钮 进入代码阶段 更改属性 public Main() { InitializeComp ...

  8. Egyptian Collegiate Programming Contest (ECPC 2015) C题 Connecting Graph

    这题上次用的是线性求LCA过的,数据比较水,当时没有被T掉(不过线性的做法是在线的).现在重新的分析一下这个问题.在所有的操作都进行完毕以后,这个图形肯定会变成一棵树,而我们的要求是在这棵树上的一条链 ...

  9. elasticsearch shield在java中的应用

    官方文档:https://www.elastic.co/guide/en/shield/current/_using_elasticsearch_java_clients_with_shield.ht ...

  10. 解析配置文件 redis.conf

    1.units单位 2.INCLUDES包含 3.GENERAL通用 1).daemonize daemonize yes 启用后台守护进程运行模式 2).pidfile pidfile /var/r ...