nginx配置

一、server_name

解释server_name的意义,文章最后会解释server在整个访问请求的流程;先上一段配置;

server {
listen ip:端口;
# 当listen出现了ip时,server_name就失去了意义。所以不配置也罢了。
#server_name 域名;

access_log 日志地址1;
error_log 日志地址2;

location / {
root /data/www/151;
index index.html index.htm;
}
}
客户端通过域名访问服务器时会将域名与被解析的ip一同放在请求中。当请求到了nginx中时。nginx会先去匹配ip,如果listen中没有找到对应的ip,就会通过域名进行匹配,匹配成功以后,再匹配端口。

当这三步完成,就会找到对应的server的location对应的资源。

二、location配置

location = / {
    # 仅仅匹配请求 /
    [ configuration A ]
}
location / {
    # 匹配所有以 / 开头的请求。
    # 但是如果有更长的同类型的表达式,则选择更长的表达式。
    # 如果有正则表达式可以匹配,则优先匹配正则表达式。
    [ configuration B ]
}
location /documents/ {
    # 匹配所有以 /documents/ 开头的请求。
    # 但是如果有更长的同类型的表达式,则选择更长的表达式。
    # 如果有正则表达式可以匹配,则优先匹配正则表达式。
    [ configuration C ]
}
location ^~ /images/ {
    # 匹配所有以 /images/ 开头的表达式,如果匹配成功,则停止匹配查找。
    # 所以,即便有符合的正则表达式location,也不会被使用
    [ configuration D ]
}
location ~* .(gif|jpg|jpeg)$ {
    # 匹配所有以 gif jpg jpeg结尾的请求。
    # 但是 以 /images/开头的请求,将使用 Configuration D
    [ configuration E ]
}
 location / {
           root   html;    // 指的是/usr/local/nginx/html
           index  index.php index.html index.htm;
       }

三、负载均衡策略

轮询	         默认方式
weight	         权重方式
ip_hash	         依据ip分配方式
least_conn	 最少连接方式

1、轮询

最基本的配置方法,上面的例子就是轮询的方式,它是upstream模块默认的负载均衡默认策略,

备注:在轮询中,如果服务器down掉了,会自动剔除该服务器

2、权重

在轮询策略的基础上指定轮询的几率

备注:在该例子中,weight参数用于指定轮询几率,weight的默认值为1,;

weight的数值与访问比率成正比,比如Tomcat 7.0被访问的几率为其他服务器的两倍

 upstream dynamic_zuoyu {
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082   backup;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }

3、ip_hash

指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器

#动态服务器组
    upstream dynamic_zuoyu {
        ip_hash;    #保证每个访客固定访问一个后端服务器
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }
  • 在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
  • ip_hash不能与backup同时使用。
  • 此策略适合有状态服务,比如session。
  • 当有服务器需要剔除,必须手动down掉。

四、压力测试

# ab -n 2000 -c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24)                //提示打开文件数量过多

五、proxy_pass

假设server_name为www.xxx.com
当请求http://www.xxx.com/aming/a.html的时候,以上示例分别访问的结果是

示例2:
location /aming/
{
    proxy_pass http://192.168.1.10/;
    ...
}
结果2:http://192.168.1.10/a.html 示例3: location /aming/ { proxy_pass http://192.168.1.10/linux/; ... } 结果3:http://192.168.1.10/linux/a.html
原文地址:https://www.cnblogs.com/wuchangblog/p/13963097.html