1.安装
yum install nginx -y
2.添加虚拟主机
server {
listen 10.1.1.111:80; #监听端口为80
server_name www.yang.com; ## 绑定域名,虚拟主机和真实主机监听的IP和端口一致时,可通过分析域名来判断是访问虚拟主机还是真实主机,因为一个IP可以绑定多个域名
root /cs4; ##设置根目录
charset utf-8; ## 设置中文编码,没有 中文会乱码
index 233.html; ## 设置默认页面为233.html,就是访问第一个找这个文件 默认为index.html
}
nginx配置虚拟主机很简单在配置文件里的server段后面再最加一个server段,里面配置监听端口和根目录即可。
3.反向代理
upstream jjjj{
server 10.1.1.114 max_fails=3 fail_timeout=20s weight=1 backup;
#backup 表示为备份服务器,只有下面两个无法访问或者特别忙的时候才会被请求 换成down 表示无论如何都无法被访问的,一般用于下架服务器
server 10.1.1.112 max_fails=3 fail_timeout=20s weight=1;
server 10.1.1.113:80 max_fails=3 fail_timeout=20s weight=2;
#创建一个后端组名字jjjj,有两个后服务器,端口不加默认为80
#max_fails=3 最大失败次数0表示禁止失败尝试
#fail_timeout=20s 最大失败超时时间
weight=2 轮询权重,表示112访问一次 113会被访问两次
ip_hash;#nginx默认分配为轮询,加这个就变成了IP哈希算法,效果是计算客户机的IP每次都分配到同一个后端主机,可以解决session一致问题。
# fair; fair算法 顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。如果需要使用这种调度算法,必须下载Nginx的upstr_fair模块。
#url_hash; url哈希算法,计算url哈希,保证计算同一个url每次都能分配到同一个后端主机,一般用于后端为缓存服务器来提高缓存命中率
}
以上代码在http内,server以上
location / {
proxy_pass http://jjjj;
proxy_set_header zsip $remote_addr;
#将remote_addr变量的值传递给 zsip变量,remote_addrm里面存放的是客户机的访问IP,目的是把真实Ip传递给后端服务器日志里
#表示所有访问该服务器的请求都转给jjjj组
}
#在server 的liocation 段加入跳转后端组的代码
以上代码在server段内
#如果不改默认记录的是前端反代server的ip,注意这边调用要加前缀 "http_".
动静分离配置
location ~ \.(php)?$ {
proxy_pass http://dddd;
#表示匹配的末尾为.php后缀的请求,转发给dddd组处理
}
location ~ \.(swf|gif|jpg)?$ {
#表示匹配到图片的转给jjjj后端组
proxy_pass http://jjjj;
}
location ~ / {
#表示前面两个没匹配上的,都给jjjj组处理
proxy_pass http://jjjj;
}
~ (.png)$ ##匹配后缀为.png的url
~ .(png|jpg)$ ##匹配后缀为.png或者.jpg的url
缓存
proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=my_cache:32m inactive=1d max_size=10g;
## 创建一个名为my_cache的缓存,使用32M内存,10g的硬盘,保存1天,注意/cache/nginx/ 文件夹属主要是nginx用户
add_header serverip $server_addr;
##传递一个字段serverip给访问的浏览器 ,值是服务器的Ip地址,反代和和后端加了,浏览器都会显示
add_header cache_status $upstream_cache_status;
## 传递一个字段给访问的浏览器,值是缓存的命中状态
#以上代码在http段内部,在server段以上
proxy_cache my_cache; #启用缓存
proxy_cache_valid 304 12h; #304状态的保存12小时
proxy_cache_valid any 10m; #其他状态保存10分钟
#调用,以上代码在location / { }内部
PS : 实验一定要将selinux 关闭,浪费了三天时间,如果修改缓存的时间,对已经缓存的内容不起作用,已经缓存的内容还是要等到前一个配置时间才会失效。
PS :匹配错误心得,proxy_pass 后面如果要带/ ,前面location 最后也必须带,建议都不要带 root /usr/share/nginx/html/doc; 修改根只能在server段修改