1. ·您当前的位置:主页 > 技术教程 > nginx教程 >

      [nginx]Nginx配置详解和负载均衡配置

      时间:2018-01-23 14:30csdn.net
      Nginx专为性能优化而开发,可以支持高并发连接性能是其最重要的考量,实现上非常注重效率,处理响应请求很快 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

      一、Nginx简介

      Nginx是俄罗斯人编写的十分轻?#32771;?#30340;HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
      Nginx以?#24405;?#39537;动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。
      Nginx因为它的稳定性、丰富的模块库、灵活的配置和低?#20302;?#36164;源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻?#32771;?#20195;替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到Apache的近2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用来做mongrel clusters的前端HTTP响应。

      Nginx专为性能优化而开发,可以支持高并发连接性能是其最重要的考量,实现上非常注重效率,处理响应请求很快 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

      Nginx具有很高的稳定性。

      其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接?#20445;?#20063;很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

      Nginx支持热部署。
      它的启动特别容易, 并且?#36127;?#21487;以做到7*24不间?#26174;?#34892;,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

      Nginx配置简单,只需要修改conf下的nginx.conf文件就行,也就几十行配置,简单的十几行就能搞定。


      启动和停止Nginx

      Nginx目前只支?#32622;?#20196;行操作,进入Nginx部署目录。

      1)         启动Nginx:start nginx
      2)         停止Nginx:nginx -s stop
      3)         修改配置后重启:nginx -s reload

      二、nginx.conf 配置文件

      Nginx 配置文件主要分成四部分:main(全局设置)、http(HTTP 的通用设置)、server(虚拟主机设置)、location(匹配 URL 路径)。还有一些其他的配置段,如 event,upstream ?#21462;?/p>

      1、 通用设置

      user nginx
      指定运行 nginx workre 进程的用户和组
      worker_rlimit_nofile #
      指定所有 worker 进程能够打开的最大文件数
      worker_cpu_affinity
      设置 worker 进程的 CPU 粘性,以避免进程在 CPU 间切换带来的性能消耗。如 worker_cpu_affinity 0001 0010 0100 1000;(四核)
      worker_processes 4
      worker 工作进程的个数,这个值可以设置为与 CPU 数量相同,如果开启了 SSL 和 Gzip,那么可以?#23454;?#22686;加此数值
      worker_connections 1000
      单个 worker 进程能接受的最大并发连接数,放在 event 段中
      error_log logs/error.log info
      错误日志的存放路径和记?#25216;?#21035;
      use epoll
      使用 epoll ?#24405;?#27169;型,放在 event 段中

      2、 http 服务器配置

      server {}:
      定义一个虚拟主机
      listen 80;
      定义监听的地址和端口,默认监听在本机所有地址上,该端口不能被其他程序占用,否则启动不了,最开始80开始的端口。
      server_name NAME [...];
      定义虚拟主机名,可以使用多个名称,还可以使用正则表达式或通配符。
      sendfile on
      开启 sendfile 调用来快速的响应客户端
      keepalive_timeout 10
      长连接超时时间,单位是秒。
      send_timeout
      指定响应客户端的超时时间
      client_max_body_size 10m
      允许客户端请求的实体最大大小
      root PATH
      设置请求 URL 所对应资源所在文件?#20302;?#19978;的根目录
      location [ = | ~ | ~* | ^~ ] URI { ... }
      设置一个 URI 匹配路径
      =:精确匹配
      ~:正则表达式匹配,区分?#22336;?#22823;小写
      ~*:正则表达式匹配,不区分?#22336;?#22823;小写
      ^~:URI 的前半部分匹配,?#20063;?#23454;用正则表达式
      优先级:
      = > location 完整路径 > ^~ > ~ > ~* > location 起始路径 > location /
      allow 和 deny
      基于 IP 访问控制,如:
      仅允许 192.168.0.1/192.168.255.255 网段客户端访问
      allow 192.168.0.1/192.168.255.255;
      deny all;

      rewrite <REGEX> <REPL> <FLAG>
      URL 重写,可以使用多种标记
      例如:
      rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
      可用的 flag:
      - last:重写完成后,继续匹配其他 rewrite 规则
      - break:重写完成后不再继续匹配
      - redirect:返回 302 重定向(临时重定向),客户端对重定向的 URL 发起新的请求
      - permanent:返回 301 重定向(永久重定向),客户端对重定向的 URL 发起新的请求
      当我们把前段工程放到nginx的html目录下的时候,我们访?#26159;?#27573;工程的时候就需要使用到URL的重写
      例如:我们的工程项目叫test,主页面是test目录下的index.html页面。
      配置如下:
      location/{
      rewrite "^/home/(.+)" /test/$1 last;
      }
      当我们访问主页面的时候使用127.0.0.1:80/home/index.htnl就OK了。

      热门文章推荐

      请稍候...
      彩票软件开发公司
        1. 北京双色彩票销售点 斯诺克世锦赛赛程 2019德甲转会 31选择7开奖走势图 黑龙江时时彩20选5走势 福彩25选5开奖结果 重庆百变王牌走势图百宝彩 扑克牌走势图 内蒙古11选5最新走势图 七星彩走势图带连线坐标走势图 福建36选7第18109期开奖 二肖中特035 北京赛车pk10 意甲数据统计 香港白姐六合图库