nginx负载均衡
一.主要参数配置详解
1.worker_processes 8;
#这个数字需要跟硬件中CPU的核数对应不能大于CPU的核数。
2.error_log logs/error.log info;
#设置nginx在运行时输出的日志(调试阶段开启;运行阶段关闭)
3.worker_connections 1024;
4.#nginx支持的最大连接数目
#配置负载均衡 如果有多个Tomcat跑同一个工程在这个地方加入#Tomcat的IP地址口
upstream YNedut5 {
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
# down 表示单前的server暂时不参与负载
#weight 默认为1.weight越大,负载的权重就越大。
# backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
所以这台机器压力会最轻。
5.开启压缩功能节约宽带
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
6.开启限制连接和限速
location / {
limit_conn one 1; #是限制每个IP 只能发起一个连接。
limit_rate 100k; #是对每个连接限速100k. 注意,这里是对连接限速,而不是对IP
#限速。(一个ip 可能存在多个连接)
}
7.开启nginx的监控
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
8.反向代理全配置
proxy_pass http://YNedut5;
#以下这些代码可以放到一个文件中(*.conf)用include包含到server中
#example: include /usr/local/nginx/conf/proxy.conf;
proxy_redirect off;
proxy_set_header Host $host; #重要必须添加
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90; #重要可以提高连接性能(主要表现tomcat负载均衡)
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
#开启页面缓存
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /data/nginx_cache/proxy_temp 1 2;#缓存存放的位置
#目的是为了用户输入的地址最后是否带\
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
9.控制禁止访问nginx中的某个目录
Location ~^/WEB-INF {
deny all;
}
二.配置文件主要内容
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#这里指定多个源服务器,ip:端口,80端口的话可写可不写(负载均衡)
upstream YNedut5 {
server 127.0.0.1:8080;
}
upstream resources {
server 127.0.0.1:8060;
}
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
location / {
root html;
index index.html index.htm;
}
#需要代理的web工程
location ~ ^/webproject{
proxy_pass http://YNedut5;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
#目的是为了用户输入的地址最后是否带\
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}#end if
}
#开启nginx的监控
location ~^/nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}#end server
}#end http