准备好四台linux虚拟机,vmware安装即可
四台机器的环境如下
lb01 192.168.178.123 用于对域名的解析,作用是对请求的判断以及负载均衡
lb02 192.168.178.124 静态服务器组
web01 192.168.178.125 上传服务器
web02 192.168.178.126 解析默认的动态url
备注:需要修改hosts文件,修改www.yu.com和lb01的地址做一个解析关系
1、当用户访问 www.yu.com/uploads,该形式的URL就判断为是上传的请求,代理服务器把该类型的请求转发给上传服务器
2、当用户访问 www.yu.com,这种形式的URL,就让他走默认的服务器组,loaction / {}
3、当用户访问 www.yu.com/static,该形式的URL就判断为是静态请求,转发给文件服务器组
如上需求,有关服务器组的配置如下
nginx实现了负载均衡的参数,主要有两个
proxy_pass http://server_upstream/;
配置静态服务器组
upstream static_pools{
server 192.168.178.124;
}
配置上传服务器池
upstream upload_pools {
server 192.168.178.125;
}
默认的动态服务器组
upstream default_pools{
server 192.168.178.126;
}
判断url的写法
(1)nginx的location功能的判断
判断当用户url是 www.yu.com/static/zhou.mp3
location /static/ {
proxy_pass http://static_pools; # 这是请求转发给地址池
include proxy.conf; # 包含语法,包含一个配置文件的参数到该虚拟主机中,属于代理参数优化写法
}
判断用户url是www.yu.com/upload/xx.jpg
location /upload/ {
proxy_pass http://upload_pools;
include proxy.conf;
}
# 最低级的url判断,所有的请求就都走这里了
location / {
proxy_pass http://default_pools;
include proxy.conf;
}
(2)使用shell语法来进行判断
# 如果用户请求url是static开头的就做什么事
# 如果用户的url是www.yu.com/static/a.mp4,具体请求的信息如a.mp4就会报存在分组当中,然后携带参数进行转发
if (")
{
proxy_pass http://static_pools/$1;
}
判断请求是upload时候做什么事
if (")
{
proxy_pass http://uoload_pools/$1;
}
location / {
proxy_pass http://default_pools;
include proxy.conf;
}
有关代理参数的优化写法
1、之前未优化的写法
server {
listen 80;
server_name _;
proxy_pass http://www_pools;
proxy_set_header Host remote_addr;
}
改进
location / {
proxy_pass http://www_pools;
include proxy.conf
}
location /static/ {
proxy_pass http://static_pools;
include proxy.conf
}
只需要在外部的nginx.conf同级目录,创建proxy.conf即可
常见的生产使用的代理参数如下,proxy.conf内容
proxy_set_header Host remote_addr;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
location /static/ {
proxy_pass http://static_pools;
include proxy.conf;
}
网友评论