您的位置:首页 > 运维架构 > Nginx

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

2017-06-15 22:33 246 查看

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(最小连接)模式设置的方法也和上面一样。

参考文献

《深入理解Nginx:模块开发与架构解析》 陶辉 著

http://nginx.org/en/docs/syntax.html

http://nginx.org/en/docs/http/load_balancing.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx