2019独角兽企业重金招聘Python工程师标准>>>

1.nginx系统配置详细说明

#nginx的运行用户
user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;#全局错误日志及PID文件
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;#工作模式及连接数上限
events {#epoll是多路复用IO(I/O Multiplexing)中的一种方式,#仅用于linux2.6以上内核,可以大大提高nginx的性能use   epoll; #单个后台worker process进程的最大并发链接数    worker_connections  1024;# 并发总数是 worker_processes 和 worker_connections 的乘积# 即 max_clients = worker_processes * worker_connections# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么# 为什么上面反向代理要除以4,应该说是一个经验值# 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000# worker_connections 值的设置跟物理内存大小有关# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:# $ cat /proc/sys/fs/file-max# 输出 34336# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置# 使得并发总数小于操作系统可以打开的最大文件数目# 其实质也就是根据主机的物理CPU和内存进行配置# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。# ulimit -SHn 65535}http {#设定mime类型,类型由mime.type文件定义include    mime.types;default_type  application/octet-stream;#设定日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,#对于普通应用,必须设为 on,#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,#以平衡磁盘与网络I/O处理速度,降低系统的uptime.sendfile     on;#tcp_nopush     on;#连接超时时间#keepalive_timeout  0;keepalive_timeout  65;tcp_nodelay     on;#开启gzip压缩gzip  on;gzip_disable "MSIE [1-6].";#设定请求缓冲client_header_buffer_size    128k;large_client_header_buffers  4 128k;#设定虚拟主机配置server {#侦听80端口listen    80;#定义使用 www.nginx.cn访问server_name  www.nginx.cn;#定义服务器的默认网站根目录位置root html;#设定本虚拟主机的访问日志access_log  logs/nginx.access.log  main;#默认请求location / {#定义首页索引文件的名称index index.php index.html index.htm;   }# 定义错误提示页面error_page   500 502 503 504 /50x.html;location = /50x.html {}#静态文件,nginx自己处理location ~ ^/(images|javascript|js|css|flash|media|static)/ {#过期30天,静态文件不怎么更新,过期可以设大一点,#如果频繁更新,则可以设置得小一点。expires 30d;}#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include fastcgi_params;}#禁止访问 .htxxx 文件location ~ /.ht {deny all;}}
}

2.nginx中location匹配规则详解

nginx是用C开发的,C语音中的location相当于java中的controller。

一个请求过来,nginx服务器具体会交给哪个或哪些location处理,将根据正则的匹配规则确定

2.1 nginx的匹配规则如下

  1. 没有修饰符 表示:必须以指定模式开始
  2. ~ 表示执行一个正则匹配,区分大小写
  3. ~* 表示执行一个正则匹配,不区分大小写
  4. ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
  5. = 进行普通字符精确匹配。也就是完全匹配。
  6. @ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

2.2 nginx的匹配规则按优先级排列

nginx的location匹配和配置中location的顺序没有太大关系。与location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。

  1. 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
  2. ^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
  3. 正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
  4. 常规字符串匹配类型。按前缀匹配。

以下是location匹配的优先级示例

location = / {# 仅仅匹配请求 /[ configuration A ]}location / {# 匹配所有以 / 开头的请求。# 但是如果有更长的同类型的表达式,则选择更长的表达式。# 如果有正则表达式可以匹配,则优先匹配正则表达式。[ configuration B ]}location /documents/ {# 匹配所有以 /documents/ 开头的请求。# 但是如果有更长的同类型的表达式,则选择更长的表达式。# 如果有正则表达式可以匹配,则优先匹配正则表达式。[ configuration C ]}location ^~ /images/ {# 匹配所有以 /images/ 开头的表达式,如果匹配成功,则停止匹配查找。# 所以,即便有符合的正则表达式location,也不会被使用[ configuration D ]}location ~* \.(gif|jpg|jpeg)$ {# 匹配所有以 gif jpg jpeg结尾的请求。# 但是 以 /images/开头的请求,将使用 Configuration D[ configuration E ]}请求匹配示例/ -> configuration A/index.html -> configuration B/documents/document.html -> configuration C/images/1.gif -> configuration D/documents/1.jpg -> configuration E注意,以上的匹配和在配置文件中定义的顺序无关。

3.nginx中负载均衡轮询策略

nginx负载均衡模块的轮询策略主要有以下4中

  1. ip_hash:根据用户的ip地址,nginx会根据hash算法将该地址传来的请求发送给固定的服务器处理,配置了该属性则权重将不生效(理论上可以用来处理session共享)
  2. 轮询:nginx将接收到的请求按顺序分配给不同的服务器进行处理
  3. 权重:可以根据各服务器的配置及请求的响应情况来配置权重,使得nginx处理请求达到一个负载均衡的效果
  4. 备用:备用服务器一般不处理请求,只有当所有在正在处理请求的服务器都挂了,才会启用该备用服务器确保系统能够正常执行

其实在具体的生产环境中,一般是不采用设置ip_hash来处理session共享的,原因是生产环境中ip地址很多是动态获取的,并不固定。所以根据hash算法算出来的结果不一样,因此ip_hash的轮询策略并不适用

另附nginx快速入手开发文档下载地址:http://pan.baidu.com/s/1pLi86wz

本文参考自以下文章:

http://www.nginx.cn/76.html

https://my.oschina.net/u/1266221/blog/877208

转载于:https://my.oschina.net/u/2988360/blog/877833

nginx一些重要配置说明相关推荐

  1. Nginx 代理服务的配置说明

    Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx 代 ...

  2. Nginx配置详情-配置说明-参数优化(一)

    前言:Nginx?为什么选择Nginx?还不用Nginx你就out了.Nginx相比Apache拥有更块.高扩展性.高可用性.低内存消耗.单机支持10万以上并发等等.后面将分为几篇文章来简单介绍Ngi ...

  3. Nginx配置图片服务器(Nginx极简配置说明)

    一.概述 同学们大家好,今天给大家带来Nginx的一篇实践配置总结,主要是Nginx做静态图片服务器的详情配置说明,还包括做反向代理.动静分离.负载均衡的极简配置. 二.Nginx安装 Nginx下载 ...

  4. Nginx配置文件的配置说明

    nginx服务的配置文件一般为nginx.conf,接下来针对nginx.conf文件中的各项配置做一个说明: #user nobody;#开启进程数 <=CPU数 worker_process ...

  5. nginx开启http2配置说明

    nginx http2协议: http2协议仅在https监听上支持,不支持明文http2 http2 cleartext. 当前http2只启用在客户端到waf之间的链路,waf到后端服务器之间的连 ...

  6. linux下nginx安装与配置说明

    Nginx运行原理 一个master配置文件中可以设置多个 worker_processes 可以使用nginx -s reload 热部署,利于nginx做热部署操作 对于每个 worker_pro ...

  7. Nginx location相关配置说明

      基于不同的IP.不同的端口以及不用得域名实现不同的虚拟主机,依赖于核心模块ngx_http_core_module实现. 新建PC web站点 [root@CentOS7 ~]#mkdir /ap ...

  8. nginx安装及配置说明(二)

    背景 前面刚介绍了nginx是什么?nginx可以做什么?那些都是停了在书面表达上面,下面我们就从nginx的安装开始,一步一步的去体会nginx的强大功能吧.... 安装 nginx的安装的方式有很 ...

  9. Nginx配置详解/代理服务的配置说明

    Nginx配置详解 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作 ...

最新文章

  1. Java怎么xml拒绝,Sun Java运行时环境XML解析拒绝服务漏洞
  2. 淘商们用数据精细化分析客户群体
  3. 转译:Oracle 中 Object_iD 和 Data_Object_ID 的区别
  4. python判断队列是否为空_[python模块]队列queue
  5. C#的RSA加密解密签名,就为了支持PEM PKCS#8格式密钥对的导入导出
  6. css知识笔记(二)——盒子模型
  7. android 振动传感器,Android光线传感器
  8. Junit5集成到SpringBoot工程
  9. 为什么说“医可救众生?佛可救众生!”
  10. ondestroy什么时候调用_JavaScript基础——你真的清楚JavaScript是什么吗?
  11. java21天打卡Day12-IO流
  12. pytorch 向量转化为one-hot编码
  13. QQ 临时会话+图标 HTML代码
  14. jetson nano ROS 教程
  15. QT utf8编码转gb2312编码,互相转换的源代码
  16. 国产linux系统优麒麟下载,优麒麟 20.04 LTS Beta 版本发布下载
  17.  定义一个变量,是一个三位数,求各个位数的和
  18. 微信短信显示服务器解包异常,最新微信小程序解包反编译bug处理 解决 $gwx is not defined 错误...
  19. 教程篇(6.0) 01. FortiGate及其Security Fabric介绍 ❀ FortiGate 安全 ❀ Fortinet 网络安全专家 NSE 4
  20. Outlook Business Contact Manager 2010入门

热门文章

  1. c语言指令 符号表,C语言指令、符号表
  2. oracle Lpad()函数和Rpad()函数的用法
  3. linux系统环境下压缩与解压缩
  4. AngularJS最理想开发工具WebStorm
  5. SpringSecurity应用(一)
  6. 如何开发与设计一个爆款小游戏
  7. java 面向对象之内存管理
  8. Java多线程(join方法)
  9. 《深入剖析Nginx》一2.5 加桩调试
  10. Bitmap和Drawable的互相转换