nginx的代理配置、负载均衡

来源:互联网 发布:红警网络卡怎么设置 编辑:程序博客网 时间:2024/05/17 04:57

linux编译安装nginx http://blog.csdn.net/shuai825644975/article/details/58026207

跟上篇nginx启动后,进行代理配置

nginx配置在nginx/conf/nginx.conf文件


常用属性

worker_processes 1;  默认工作进程数,可以改为跟CPU综核数一致

events {

        worker_connections 1024;  默认一个工作进程最大允许连接数,具体根据电脑情况修改

}

http {

        log_format     main      'xxxx';  日志开启和输出内容配置(main可以自定义)

        access_log     路径/log_name.log      main;  日志输出路径(main需要和log_format的main保持一致)


        #gzip on|off;  压缩配置开关(太小的文件不建议压缩)

        #gzip_buffer 32 4k;  设置系统获取多少个单位的缓存用于存储gzip的压缩结果数据流

        #gzip_comp_level 6;  压缩级别[1-9],值越高,压缩的内容越小

        #gzip_min_length 200;  开始压缩的最小长度

        #gzip_types text/css text/xml application/x-javascript;  对哪些文件做压缩处理

        #gzip_vary on|off;  是否传输gzip压缩标识

        #gzip_disable "MSIE [1-6]\.";  正则匹配UA,表示对指定的浏览器不做gzip压缩


        #upstream实现负载均衡,可以有多个upstream {}配置。upstream_name属性可以自定义,但是proxy_pass http://upstream_name;需要和它唯一对应

        upstream  upstream_name  {

                server  127.0.0.1:8081

                server  127.0.0.2:8081

                .....

        }


        server {

                listen    80; 监听端口

                server_name    www.ershuai.com;  监听名称

                location / {

                        root        html;                 指定访问资源路径;nginx/html/目录

                        index      index.html;      在root指定的目录下,找到名称为index.html文件(如果请求静态资源的话,可以不要index属性。如图片资源,配置root属性就行)

                        proxy_redirect    off;   default|off|redirect replacement,默认会烦location是proxy_pass值,可以通过proxy_redirect修改

                        proxy_set_header    Host   $host;    设置头部信息

                        proxy_set_header    X-real-ip    $remote_addr; 

                        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

                        proxy_pass   http://127.0.0.1:8081/project_name;   普通情况下,配置访问项目

                        proxy_pass   http://upstream_name;  负责均衡情况下,upstream_name是upstream配置的name属性

                }

        }

}

conf中还有很多属性命令,有需要可以再具体了解。

location中的正则匹配

语法:location [=|~|~*|^~] /uri/ { …}

=        开头表示精确匹配

^~      表示uri以某个常规字符串开头,相当于匹配uri路径

~        区分大小写的正则匹配

!~       区分大小写不匹配

!~*      不区分大小不匹配

 ~*      不区分大小写的正则匹配

/          通用匹配

有多个location配置的时候,匹配等级:精准匹配 > 一般匹配 > 正则匹配


rewrite重写

语法: if (condition) { }

条件:

=             判断相等,用于字符的比较

~             正则匹配,区分大小写

~*           正在匹配,不区分大小写

-f|-d|-e    判断是否为文件|目录|是否存在


--------------------------------------------------------------------------------------------------------------


一般情况下,肯定会有多域名配置

1、可以在nginx.conf文件中,配置多个server {} 

2、可以通过include引入文件的方式,一个域名一个.conf文件

采用第2种,方便管理


1、在指定目录创建文件夹,存放所有.conf文件

2、修改nginx/nginx.conf文件配置

在http属性内引入文件,指向.conf存放目录

include xxxxx/*/*.conf;    *是通配符


(在conf目录同级创建www-custom文件夹,下面一个域名一个文件夹,每个文件夹下有logs文件夹用于存放日志,xxx.conf配置属性)


3、配置.conf文件属性


4、以上基础匹配完成后,在sbin目录下,启动或重启nginx,访问www.xxxxxx域名

启动:./nginx

重启:./nginx -s reload



-------------------------------------------------------------------------------------------------------------

upstream机制

1、轮询

默认选项,所有节点weight=1,每个请求按时间顺序逐一分配,如果节点宕掉,自动剔除

upstream name {

        server 127.0.0.1:8080;

        server 127.0.0.2:8080;

}

2、ip_hash

每个请求按ip的hash结果分配,用户ip固定的情况下会固定访问一个服务端,可以解决session不能跨服共享问题

如果节点宕掉,需要手动剔除

upstream name {

        ip_hash;

        server 127.0.0.1:8080;

        server 127.0.0.2:8080;

}

3、weight权重

指定轮询几率,weight和访问比率成正比,如果节点宕掉,自动剔除

upstream name {

        server 127.0.0.1:8080 weight=1;

        server 127.0.0.2:8080 weight=2;

}

4、fair

按节点响应时间分配请求,响应时间短优先分配

upstream name {

        server 127.0.0.1:8080;

        server 127.0.0.2:8080;

        fair;

}

5、url_hash

按访问url的hash结果分配,url相同的情况下会访问到同一服务器。hash_method使用的hash算法

upstream name {

        server 127.0.0.1:8080;

        server 127.0.0.2:8080;

        hash $request_uri;

        hash_method crc32;

}



-------------------------------------------------------------------------------------------------------------

项目部署到tomcat,session失效

在location里配置一个属性(/ /中间有个空格的)

proxy_cookie_path /project_name/ /;


-------------------------------------------------------------------------------------------------------------
0 0
原创粉丝点击