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压缩
underscores_in_headers on; #该属性默认为off,表示如果header name中包含下划线,则忽略掉。
#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/ /;
-------------------------------------------------------------------------------------------------------------