nginx 学习笔记(二)nginx 配置相关

来源:互联网 发布:湖南联通网络客服电话 编辑:程序博客网 时间:2024/05/17 02:32

nginx配置文件

nginx有大量的官方和第三方模块,而这些模块只需要简单的在nginx的配置文件中添加配置项命令即可,每个模块会解析自己感兴趣的配置项,nginx的配置文件默认在/usr/local/nginx/conf/nginx.conf

配置文件大概长这样:

这里写图片描述

注释

nginx配置文件中#代表注释当前行

语法

nginx的配置项语法为:配置项名 参数1 参数2 … ;
某些配置项的参数可以是块,比如上面图片中的

events {    worker_connections  1024;}

单位

某些模块的配置项参数是可以带有单位的
这些单位分别是表示大小和时间的
表示大小的有:K或k,M或者m
表示时间的有:ms(毫秒),s(秒),m(分钟),h(小时),d(天),w(周),M(月),y(年)

变量

部分nginx模块是支持在nginx.conf配置文件中使用变量的,在nginx.conf中使用变量只需要在前面加上$即可,而是否能使用某个变量要看是否有某个模块支持这个变量。

nginx的基本配置项

nginx运行时所必须的一些模块所提供的配置项称为基本配置项,具体的配置项比较多这里就不一一列举出来了,可以参考《深入理解nginx 第二版》的P34 - P40。

HTTP配置项

nginx的ngx_http_core_module提供了丰富的HTTP相关的配置项,还有一些nginx变量,可以在《深入理解nginx 第二版》的P40 - P59找到。

负载均衡配置

关于负载均衡可以自行百度,nginx也提供了负载均衡的功能

nginx提供了三种负载平衡机制:

  • round-robin(轮询),在上游服务器循环着找服务器进行转发
  • least-connected(最小连接),也就是每次在上游服务器中找一个连接数最小的服务器进行转发
  • ip-hash,根据客户的的IP地址来计算hash值,再对上游服务器的个数进行取模(或者类似的操作),这样可以保证每一个客户端可以找到一个固定的上游服务器

nginx的负载均衡配置只需要在upstream块里设置上游服务器,然后在server块里配置proxy_pass,nginx支持的协议有HTTP,、HTTPS、FastCGI、uwsgi、SCGI、memcached。

如果upstream块内不设置平衡机制,那么默认会是round-robin(轮询)模式,如果要显式写上平衡机制,那么只需要添加一行least_conn;(最小请求)或者ip_hash;即可

http {    upstream myapp1 {        server srv1.example.com;        server srv2.example.com;        server srv3.example.com;    }    server {        listen 80;        location / {            proxy_pass http://myapp1;        }    }}

此外,nginx还支持加权负载平衡,也就是说每一个上游的server都可以配置他的权重,权重越大的server被选中的概率越高,只需要在配置server时写上weight = x即可。

upstream myapp1 {    server srv1.example.com weight=3;    server srv2.example.com;    server srv3.example.com;}

在最新的nginx版本中,ip-hash的模式和least-connected(最小连接)模式设置的方法也和上面一样。

参考文献

  1. 《深入理解Nginx:模块开发与架构解析》 陶辉 著
  2. http://nginx.org/en/docs/syntax.html
  3. http://nginx.org/en/docs/http/load_balancing.html