NGINX简单总结

特点总结

  1. nginx有一个master进程和多个worker进程,master进程是主要用来管理worker进程,管理的内容包括以下内容:接收来自外界的信号,向各个woker进程发送信号,监控worker进程的运行状态,当worker进程退出后,会自动重新启动新的worker进程。

  2. 每个worker进程是相对独立平等的,相互竞争处理一个请求,并且从始至终的处理这个请求,不会出现处理其他进程的请求;

选择NGINX的理由

  1. 底层由epoll(异步阻塞的方式)来实现,可以实现高并发;

  2. 内存消耗少,1w个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存;

  3. 成本低廉,BSD协议开源免费;

  4. 配置文件简单易懂;

  5. 支持rewrite重写规则;能根据域名、URL的不同,将HTTP请求分发到不同的后端服务器群组中;

  6. 内置的健康检查功能;即使Nginx proxy后端的某台web服务器宕机了,也不会影响前端访问;

  7. 稳定性高;

  8. 支持热部署;可以长时间的运行,并且可以在不间断服务的情况下,对软件版本进行升级;

  9. 设计极具扩展性;它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成;

配置结构

nginx.conf的配置结构包括main全局块、events块、http块、server块、location块;不同模块的执行关系:server继承main,location继承server,upstream既不会继承指令也不会被继承,它有它自己的特殊指令;

指令上下文 解释
main 与具体业务功能无关的一些参数;比如工作进程数等;
http 与提供http服务相关的一些配置参数;
server http服务器上支持若干个虚拟主机, 每个虚拟主机对应一个server配置项,配置项中包含该虚拟主机相关的配置;
location http服务中,某些特定的URL对应的一系列配置项;
mail 实现email相关的SMTP/IMAP/POP3代理时,共享的一些配置项;

nginx.conf

# 定义Nginx运行的用户和用户组,默认是nobody
user nobody;
# 允许生成的进程数,建议设置为等于CPU总核心数
worker_processes 2;
# 指定错误日志路径,级别;这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg
error_log logs/error.log info;

# 工作模式以及连接数上线
events {
   use epoll;  # 时间驱动模型,包括select, poll, epoll, kqueue等
   worker_connections 1024;  # 单个work进程允许的最大连接数目
}

# http服务器
http {
   #gzip模块设置
   gzip on; #开启gzip压缩输出
   gzip_min_length 1k; #最小压缩文件大小
   gzip_buffers 4 16k; #压缩缓冲区
   gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
   gzip_comp_level 2; #压缩等级
   gzip_types text/plain application/x-javascript text/css application/xml;
   #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
   gzip_vary on;
   #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用
   
   # 子配置放到/usr/local/nginx/conf/servers/*/目录下
   include /usr/local/nginx/conf/servers/\*/upstream.conf;
   include /usr/local/nginx/conf/servers/\*/site.conf;
}

site.conf

# 虚拟主机的配置
# http接口
server {  
   listen          80 default_server;  
   client_max_body_size 20m;  # 最大上传包
   server_name     www.linuxidc.com;  
   access_log     logs/linuxidc.access.log main;
   # 子配置放到/usr/local/nginx/conf/servers/test/locations/目录下
   include /usr/local/nginx/conf/servers/test/locations/\*.location;
}

# https接口
# 1. https的固定端口是443,不同于HTTP的80接口
# 2. SSL标准需要引入安全证书,所以在 conf 中你需要指定证书和它对应的 key
server {
   listen 443 ssl http2 default_server;
   root /usr/local/nginx/conf/servers/test/nginx_www/;  # 指定证书的位置
   include /usr/local/nginx/conf/servers/common/ssl_config.conf;
   include /usr/local/nginx/conf/servers/test/https/ssl_rewrite.location;
   include /usr/local/nginx/conf/servers/test/locations/\*.location;
}

upstream.conf

# 设定实际的服务器列表,几种负载均衡的方式

upstream mysvr1 {  
   server 127.0.0.1:7878;
   # 热备(其它所有的非backup机器down或者忙的时候,请求backup机器))
   server 192.168.10.121:3333 backup;
}
upstream mysvr2 {
   # weigth参数表示权值,权值越高被分配到的几率越大
   server 192.168.1.11:80 weight=5;
   server 192.168.1.12:80 weight=1;
   server 192.168.1.13:80 weight=6;
   send_timeout 90;
   proxy_connect_timeout 50;
   proxy_send_timeout 90;
   proxy_read_timeout 90;
}
upstream https-svr {
   # 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
   ip_hash;
   server 192.168.1.11:90;
   server 192.168.1.12:90;
}

project.location

# 反向代理的路径,和upstream绑定,location后面绑定映射的路径
location /app1 {
   include uwsgi_params;
   uwsgi_pass mysvr1;
}

location /passport {
   include uwsgi_params;
   uwsgi_pass https-svr;
}

Nginx简单总结的更多相关文章

  1. Nginx 简单的负载均衡配置示例(转载)

    原文地址:Nginx 简单的负载均衡配置示例(转载) 作者:水中游于 www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP. 用户访问http://www ...

  2. nginx简单反向代理和负载均衡(ubuntu)

    nginx简单反向代理与负载均衡 环境:三台ubuntu 12.04.5 虚拟机    均装有nginx 1.1.19 以下u1(192.168.240.129) ,u2(192.168.240.13 ...

  3. nginx简单双机热备:backup参数的使用

    nginx简单双机热备:backup参数的使用 nginx简单双机热备:backup参数的使用

  4. Nginx简单操作

    Nginx简单操作 平滑重启:读取配置文件,正确后启动新nginx,关闭旧服务进程 # kill HUP nginx.pid # /usr/sbin/nginx -c /etc/nginx/nginx ...

  5. 负载均衡介绍及Nginx简单实现

    负载均衡介绍及Nginx简单实现 负载均衡 负载均衡介绍及Nginx简单实现 1. 介绍 2. 常用的开源软件 2.1 LVS 优点 缺点 2.2 Nginx 优点 缺点 3. 常用的开源反向代理软件 ...

  6. 一篇文章带你了解轻量级Web服务器——Nginx简单入门

    一篇文章带你了解轻量级Web服务器--Nginx简单入门 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器 在本篇中我们会简单介绍Nginx的特点,安装,相关指令使用以及配置信 ...

  7. Nginx简单实现网站的负载均衡

    在大型网站搭建时,都会考虑如果用户量每日不断增加,大量的并发访问,会不会给网站.数据库带来崩盘的灾难.今天我们就讨论一下,现实中如何解决这些问题的一套最为容易实现的方案. 控制并发,大家都会首先考虑的 ...

  8. 使用nginx简单实现负载均衡

    只是简单使用nginx玩玩而已,知道能这么用,但是在实际项目中并没有实践过,在项目不大的时候用不到,但是对于理解负载均衡来说还是可以的. 利用虚拟机安装了三个centOS系统,然后顺便装了环境. 这里 ...

  9. Nginx 简单记录

    Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. ...

随机推荐

  1. 40个新鲜的 jQuery 插件,使您的网站用户友好

    作为最流行的 JavaScript 开发框架,jQuery 在现在的 Web 开发项目中扮演着重要角色,它简化了 HTML 文档遍历,事件处理,动画以及 Ajax 交互,这篇文章特别收集了40个新鲜的 ...

  2. js基础知识:闭包,事件处理,原型

    闭包:其实就是js代码在执行的时候会创建变量对象的一个作用域链,标识符解析的时候会沿着作用域链一级一级的网上搜索,最后到达全局变量停止.所以某个函数可以访问外层的局部变量和全局变量,但是访问不了里层的 ...

  3. python技巧 is 和 ==

    is 判断变量是否指向同一个对象 == 判断变量引用的对象是否相等 In [2]: a=[1,2] In [3]: b=a In [4]: a == b Out[4]: True In [5]: a ...

  4. Ansible Tower系列 四(使用tower执行一个命令)【转】

    在主机清单页面中,选择一个主机清单,进入后,选择hosts里的主机 Paste_Image.png 点击 RUN COMMANDS MODULE 选择 commandARGUMENTS 填写 ifco ...

  5. 爬虫、框架scrapy

    阅读目录 一 介绍 二 安装 三 命令行工具 四 项目结构以及爬虫应用简介 五 Spiders 六 Selectors 七 Items 八 Item Pipeline 九 Dowloader Midd ...

  6. spring动态加载(刷新)配置文件 [复制链接]

    待验证 在程序开发时,通常会经常修改spring的配置文件,不得不重启tomcat来加载spring配,费时费力.如果能在不重启tomcat的情况下,手动动态加载spring 配置文件,动态重启读取s ...

  7. Android 6.0 API

    Android 6.0 (M) 为用户和应用开发者提供了新功能.本文旨在介绍其中最值得关注的 API. 着手开发 要着手开发 Android 6.0 应用,您必须先获得 Android SDK,然后使 ...

  8. js中parentNode,parentElement,childNodes,children

    首先了解parentNode,parentElement,childNodes,children四大属性之前,必须对Dom树有一定的了解,在Dom文档结构中,HTML页面每一部分都是由节点组成的,节点 ...

  9. Java abstract 关键字

    abstract是声明抽象类和抽象方法的关键字 包含抽象方法的类叫抽象类,如果一个类中包含一个或多个抽象方法,该类必须被限定为抽象的,否则编译器会报错,抽象类不可创建对象,创建抽象类的对象编译器会报错 ...

  10. 移动端console.log()调试

    在微信或app进行开发的时候,没法直接查看console.log的输出内容,调试起来简直太痛苦了. 1.笨笨的方法 fiddler抓请求:追加dom节点,显示调试信息. var div =docume ...