Nginx配置教程

nginx反向代理/负载均衡

nginx是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及负载均衡和HTTP缓存

  1. 代理,就是在客户端和服务端之间强行添加了一层,用来实现流量转发的功能
  2. 正向代理,是用于代理客户端的。举个很简单的例子:你直接在大陆地区访问google.com肯定是访问不了的,但是现在假如你有一台在美国的主机A,并且能够正常访问,那么你可以将浏览器对google.com的请求先转发给服务器A,服务器A收到请求后,扮演客户端的角色,发起对google.com的请求,服务器A收到响应后,又扮演服务端,将此响应原封不动的返回给你,自此,一次正向代理顺利完成。
  3. 反向代理顾名思义是用来代理服务端的多台机器,访问同一个域名可以分流到不同的服务器。也就是负载均衡,用来分流流量压力到不同的服务器

nginx的多进程并发模型

nginx配置文件

  1. 配置文件所在的常见目录: (可用nginx -t 测试配置文件是否正确)

    /etc/nginx/nginx.conf
    /opt/nginx/conf/nginx.conf
    /usr/local/nginx/nginx.conf
    /usr/local/etc/nginx/nginx.cnf(Mac系统)
    
  2. Nginx配置文件主要分成6部分:main(全局设置)、server(主机设置/指定虚拟主机域名、IP和端口)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置/用于匹配网页位置)、events(nginx工作模式)、http(http设置)

  3. 他们之间的关系式:server继承main,location继承server,upstream既不会继承指令也不会被继承,它有自己的特殊指令,不需要在其他地方的应用
  4. 参考链接
Nginx限速和超时配置
  1. nginx可以通过
    两个模块都能够对客户端访问进行限制。
    1
    2
    3
    4
    5
    6
    7
    2. [nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用详解](http://blog.51cto.com/michaelkang/1257476)
    3. [nginx超时设置](http://blog.csdn.net/liujiyong7/article/details/18228915)
    4. **限速配置实例**

    > * ```limit_req_log_level```: 设置日志级别,默认值为error级别,当服务器因为频率过高拒绝或者延迟处理请求时可以记下相应级别的日志。延迟记录的日志级别比拒绝的低一个级别,如果设置“limit_req_log_level notice”, 则延迟的日志就是info级别

    > * ```limit_req_status```: 设置拒绝请求的响应状态码,例如```limit_req_status 503
> * 
zone
1
>> 设置内存限制域为10M(1M存储区可以保存32000个32字节或16000个64字节的状态。如果存储区满,服务器将对其他请求相应503状态码),限制平均每秒不超过1个请求,同时允许超过频率限制的请求数不多于5个
limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s; server
{ location /www.ttlsa.com/ { limit_req zone=ttlsa_com burst=5; } } ```
Nginx日志配置
  1. error.log日志配置,主要用于排查错误。

    配置语法:error_log /path/file level;

    默认配置:error_log logs/error.log error;

    • level是日志的输出等级,取值范围从小到大为(debug,info,notice,warn,error,crit,alert,emerg)。当设定为一个级别时,大于或者等于该级别的日志都会被输出到/path/file文件中,小于该级别的日志则不会输出。例如:当设定为error级别时,error,crit,alert,emerg级别的日志都会输出;如果设定的日志级别是debug,则会输出所有的日志。

    • /path/file也可以是/dev/null,这样就不会输出任何日志,这也是关闭error日志的唯一手段。

    • /path/file也可以是stderr,这样日志会输出到标准错误文件中。

  2. access.log: nginx请求日志