最近在学习nginx的负载均衡和反向代理,先看下这两个简单的配置吧!
负载均衡配置:
worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream test {//默认是80端口
server 192.168.0.11 weight=2;
server 192.168.0.12 weight=3;
}
server {
listen 80;
location / {
#反向代理的地址
proxy_pass http://test;
}
}
}
反向代理配置:
worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream test {//默认是80端口
server 192.168.0.11 weight=2;
server 192.168.0.12 weight=3;
}
server {
listen 80;
location / {
#反向代理的地址
proxy_pass http://test;
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
#Proxy Settings
proxy_redirect off;
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}
proxy_cache,给个范例供参考:
location ~ .*\.html$
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_valid 301 302 1m;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Accept-Encoding "";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_pass http://backend_server;
expires 5d;
}
从配置上来看,反向代理只是多了Proxy Settings下面的一些设置参数!但从实际的表现结果来看,感觉区别并不是很大,负载均衡已经可以把用户的请求按照相关算法和规则发送到web集群的某台机器,而反向代理也是实现了如此的功能。
负载均衡是做反向代理的目的之一
反向代理主要是缓存东西,以便减少并发操作,是对 proxy_cache相关指令集用户静态内容缓存和fastcgi_cache相关指令集用户动态内容缓存