nginx负载均衡与动静分离配置
ngxin可以作为静态资源服务器,反向代理服务器,还可以虚拟主机。
nginx配置文件 /nginx/server/conf/nginx.conf
1 #user nobody; #代表当前配置文件的权限 通常设置为root 2 3 server { 4 listen 80; #代表监听的端口 5 server_name localhost; 6 7 #charset koi8-r; 8 9 #access_log logs/host.access.log main; 10 11 location / { #匹配规则 一个sever下面可以有多个location 12 root html; #root 表示根目录 /nginx/server 13 index index.html index.htm; 14 } 15 16 #error_page 404 /404.html; 17 18 # redirect server error pages to the static page /50x.html 19 # 20 error_page 500 502 503 504 /50x.html; 21 location = /50x.html { 22 root html; 23 } 24 25 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 26 # 27 #location ~ \.php$ { 28 # proxy_pass http://127.0.0.1; 29 #} 30 31 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 32 # 33 #location ~ \.php$ { 34 # root html; 35 # fastcgi_pass 127.0.0.1:9000; 36 # fastcgi_index index.php; 37 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 38 # include fastcgi_params; 39 #} 40 41 # deny access to .htaccess files, if Apache's document root 42 # concurs with nginx's one 43 # 44 #location ~ /\.ht { 45 # deny all; 46 #} 47 }
proxy_pass 与 upstream 配合使用实现反向代理和负载均衡
upstream fdfs.com { # upstream 模块实现负载均衡,在server模块上面配置upstream,默认轮询 server 10.130.1.101:80 weight=1; server 10.130.1.102:80 weight=2; server 10.130.1.103:80 weight=3; client_max_body_size 20m; #接收的最大传输大小 } location /group { proxy_pass http://fdfs.com; } upstream mywebs { ip_hash; server 192.168.10.61 weight=5 max_fails=3 fail_timeout=10s; server 192.168.10.62 weight=5 max_fails=3 fail_timeout=10s; } location / { proxy_pass http://mywebs; proxy_redirect default; }
upstream模块的负载均衡算法主要有三种,轮调(round-robin)、ip哈希(ip_hash)和 最少连接(least_conn)三种。
ip_hash:基于客户端IP地址完成请求的分发,它可以保证来自于同一个客户端的请求始终被转发至同一个upstream服务器;ip哈希可以解决session登录的问题。
round-robin : 基于 权重的轮询。不需要明确注明,在各个节点中设置 权重 weight 即可。
least_conn: 最少连接调度算法;
定义一个upstream服务器的地址,还可包括一系列可选参数,
weight:权重(主要用于 轮询调度。)
max_fails:max_fails默认为1。只要某个server只要失败过一次,就会计数, 当有请求到来时,检查它的失败次数,如果达到一次,就在10s内先不要发送请求给它。
fail_timeout:fail_timeout默认为10s
静态资源配置,实现动静分离:
#如配置如下location #表示url为 /static/*.xxx 的图片或者js等静态资源则会到/html/static目录下去寻找资源 location /static/~(.*)(\.jpg|\.png|\.gif|\.jepg|\.css|\.js|\.css){ alias html; } #或者如下配置 访问以下后缀的静态文件会到nginx目录中static目录寻找 location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${ root static; expires 30d; #过期时间30天 }