知识分享
nginx配置实践

目录

  • 主要配置

  • http模块

  • sever模块

  • location模块

  • upstream模块

    • 几种常用的负载均衡调度算法







    • 主要配置

    • main(全局配置)

    • events(Nginx 工作模式) 

    • http(HTTP 设置)

    • server(主机设置) 

    • location(URL 匹配) 

    • upstream(负载均衡设置) 

    • http模块

    • Log_format

    • 日志文件格式定义,在默认提供的几种文件格式之外指定设置一种正常记录访问连接的日志格式,也是最常用的日志格式

    • Access_log

    • 设置正常访问连接的日志存储,使用上面定义的

    • sever模块

    • listen 听的端口,默认是 80 端口

    • server_name 监听的所有的请求,无论是外网请求还是内网请求还是内网请求

    • location 请求的资源定位

    • proxy_set_header允许重新定义或者添加发往后端服务器的请求头

    • location模块

    • location匹配命令

    • /     通用匹配, 如果没有其它匹配,任何请求都会匹配到

    • ~     开头表示区分大小写的正则匹配

    • ~*   开头表示不区分大小写的正则匹配

    • ^~    开头表示uri以某个常规字符串开头,不是正则匹配

    • =    进行普通字符精确匹配

    • location 匹配的优先级(与location在配置文件中的顺序无关)

    • = 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。

    • ^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。

    • 最后匹配里带有“~”和“~*”的指令,如果找到相应的匹配,则nginx停止搜索其他匹配。

    • 当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的指令会被使用。

    • upstream模块

    • 几种常用的负载均衡调度算法

    • RR 轮询调度算法
      • 分配权重 (Weight)

      • 每个请求按时间顺序逐一分配到不同的后端服务器,如果某一台后端服务器宕机,故障系统被自动剔除,使用户访问不受影响。weight ,指定轮询权重,weight 越大,分配到的访问几率越高,主要用于后端服务器性能不均的情况下

    • ip hash
      • 每个请求按访问 IP 的hash 结果分配,这样来自同一个 IP 的访客固定访问一个后端服务器,可以有效解决动态网页的 session 存储问题

    • fair
      • 比上面两个更智能的负载均衡调度算法。这种算法可以根据页面大小和加载时间的长短来智能的进行负载均衡,也就是根据不同的后端服务器对不同的访问请求的响应时间来分配,以确保每一个访问都是使用最短的加载时间的服务器。

      • Nginx 本身是不支持这种调度算法,需要加载 Nginx 的 第三方的upstream_fair模块 来使用这种调度算法。

      • 重新编译Nginx 在./configure 命令后面添加—add-module=/abosutely/path/upstream_fair_module指令