lvs+keepalive+nginx(realserver)两台+tomcat(后端服务器),nginx的配置文件nginx.conf如下
user nobody nobody; worker_processes 12; error_log /var/log/nginx/error.log crit;(取消记录错误日志) #error_log /var/log/nginx/debug.log debug_http; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /var/run/nginx.pid; worker_rlimit_nofile 65535;(进程能够打开的最多文件描述符数) events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; gzip on; #开启gzip压缩 gzip_buffers 4 8k; #指定缓存压缩应答的缓冲区数量和大小 gzip_comp_level 6; #指定压缩等级,其值从1到9,1为最小化压缩(处理速度快) gzip_min_length 1k;#设置被压缩的最小请求,单位为bytes。少于这个值大小的请求将不会被压缩 gzip_http_version 1.1; #是否根据HTTP请求版本来启用gzip压缩 #gzip_proxied expired no-cache no-store private auth any off; gzip_proxied any; #为所有请求启用压缩 gzip_types text/plain application/x-javascript text/css application/xml; #为除“text/html”之外的MIME类型启用压缩,“text/html”总是会被压缩 gzip_vary off; #关闭应答头“Vary: Accept-Encoding” sendfile on; #sendfile()函数在一个文件描述符与另一个之间拷贝数据,由于这个拷贝过程是在内核状态下完成 tcp_nodelay on;#这个指令指定是否使用socket的TCP_NODELAY选项,这个选项只对keep-alive连接有效 keepalive_timeout 60; #参数的第一个值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接 tcp_nopush on; #这个指令指定是否使用socket的TCP_NOPUSH(FreeBSD)或TCP_CORK(linux)选项,这个选项只在使用sendfile时有效 server_names_hash_bucket_size 128; #服务器名称哈希表每个页框的大小,这个指令的默认值依赖于cpu缓存 client_header_buffer_size 32k; #指令指定客户端请求头部的缓冲区大小 large_client_header_buffers 8 32k;#指定客户端一些比较大的请求头使用的缓冲区数量和大小 client_max_body_size 8m; #指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段 client_body_buffer_size 128k; #这个指令可以指定连接请求实体的缓冲区大小 client_body_temp_path /tmp/client_temp 1 2; #指令指定连接请求实体试图写入的临时文件路径 open_file_cache max=65535 inactive=30s;#这个指令指定缓存是否启用,如果启用,将记录文件以下信息 #max - 指定缓存的最大数目,如果缓存溢出,最近最少使用的文件(LRU)将被移除 #inactive - 指定缓存文件被移除的时间,如果在这段时间内文件没被下载,默认为60秒) open_file_cache_valid 60s;#这个指令指定了何时需要检查open_file_cache中缓存项目的有效信息 open_file_cache_min_uses 1;#这个指令指定了在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态 server_name_in_redirect on; #如果这个指令打开,nginx将使用server_name指定的基本服务器名作为重定向地址,如果关闭,nginx将使用请求中的主机头 server_tokens off;#是否在错误页面和服务器头中输出nginx版本信息 index index.html index.htm index.jsp index.php; ####### begin fastcgi ####### fastcgi_connect_timeout 30; #指定同FastCGI服务器的连接超时时间,这个值不能超过75秒 fastcgi_send_timeout 30; #指令为上游服务器设置等待一个FastCGI进程的传送数据时间 fastcgi_read_timeout 30; #前端FastCGI服务器的响应超时时间,如果有一些直到它们运行完才有输出的长时间运行的FastCGI进程,或者在错误日志中出现前端服务器响应超时错误,可能需要调整这个值 fastcgi_buffer_size 64k; #这个参数指定将用多大的缓冲区来读取从FastCGI进程到来应答头 fastcgi_buffers 4 64k; #这个参数指定了从FastCGI进程到来的应答,本地将用多少和多大的缓冲区读取 fastcgi_busy_buffers_size 128k;#一般设置为fastcgi_buffer_size的两倍 fastcgi_temp_file_write_size 128k; ####### end fastcgi ####### ####### begin proxy ####### proxy_redirect off; proxy_connect_timeout 20; #指定一个连接到代理服务器的超时时间,单位为秒,需要注意的是这个时间最好不要超过75秒 proxy_send_timeout 30; #设置代理服务器转发请求的超时时间,单位为秒 proxy_read_timeout 30; #决定读取后端服务器应答的超时时间,单位为秒,它决定nginx将等待多久时间来取得一个请求的应答 proxy_buffer_size 32k; #设置从被代理服务器读取的第一部分应答的缓冲区大小 proxy_buffers 32 64k; #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小 proxy_busy_buffers_size 64k; #为proxy_buffer_size的两倍 proxy_pass_header Set-Cookie; #这个指令允许为应答转发一些隐藏的头部字段 fastcgi_pass_header Set-Cookie; proxy_temp_path /www/cache/proxy_temp; #类似于http核心模块中的client_body_temp_path指令,指定一个地址来缓冲比较大的被代理请求 fastcgi_temp_path /www/cache/fastcgi_temp; #指令指定存储从别的服务器传送来的数据临时文件路径,同样可以指定三级目录已经哈希存储 fastcgi_cache_path /www/cache/cache_t2 levels=1:2 keys_zone=cache_t2:200m inactive=1d max_size=3g; proxy_cache_path /www/cache/cache_t1 levels=1:2 keys_zone=cache_t1:200m inactive=1d max_size=3g; proxy_cache_path /www/cache/www.test2.com levels=1:2 keys_zone=test2:200m inactive=7d max_size=3g; proxy_cache_path /www/cache/www.test1.com levels=1:2 keys_zone=test1:200m inactive=7d max_size=3g; proxy_cache_path /www/cache/www.test.com levels=1:2 keys_zone=test:200m inactive=7d max_size=3g; ####### end proxy ####### log_format access_sinoicity ‘$remote_addr|$remote_user|[$time_local]|$request|‘ ‘$status|$body_bytes_sent|$http_referer|‘ ‘$http_user_agent|$http_x_forwarded_for|$sent_http_content_range|$request_time|$host‘ ‘$request_body|$upstream_addr‘; log_format forcdn ‘$remote_addr|$remote_user|[$time_local]|$request|$status|$body_bytes_sent|‘ ‘$http_referer|$http_user_agent|$http_x_forwarded_for|‘ ‘$http_Cdn_Src_Ip|$http_Via‘; # # The default server # server { listen 80; server_name localhost; access_log off; location / { root html; index index.html index.htm; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } include conf.d/*.conf; }
虚拟主机配置文件
conf.d/www.test1.com.conf
server { listen 80; server_name www.test.com # www.test1.com #charset utf-8; access_log /var/log/nginx/www.test.com.log combined; location / { proxy_set_header Host www.test.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://test;#test1、test2 proxy_redirect http://www.test.com /; } #location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|rar|css|js|zip|xml|txt|flv|swf|mid|doc|cur|xls|pdf|txt|mp3|wma)$ { location ~ .*\.(css|js|gif|jpg|jpeg|png|bmp|ico|xml|txt|swf|doc|cur|xls)$ { #proxy_set_header Host $http_host; proxy_set_header Host #www.test1.com www.test2.com proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_pass_header Set-Cookie; proxy_pass http://test; #test1、test2 #add_header Cache-Control "max-age=604800"; add_header X-Cache "Cached by nginx - sinoicity-01"; proxy_cache_valid 200 304 7d; proxy_cache test; #test1、test2 #proxy_cache_key $host$uri$is_args$args; proxy_cache_key $host$uri$is_args; expires 7d; } }
conf.d/upstream.conf
upstream test { server 192.168.100.10:80; } upstream test1 { server 192.168.100.20:80; } upstream test2 { server 192.168.100.30:80; }
本文出自 “不莱梅乐队” 博客,谢绝转载!
原文:http://danhanwen.blog.51cto.com/8525423/1539611