Nginx 负载均衡在金山逍遥网中的实际应用
在金山逍遥网中,前端负载均衡服务器采用的是Nginx,两台Nginx服务器为一组,承担多种类型的负载均衡服务,两台负载均衡服务器均处于活动状态,各自绑定一个公网虚拟IP,作为负载均衡服务器,当其中一个发生故障时,另一台接管发生故障服务器的虚拟IP。配置nginx.conf代码如下
代码:
user www www;
work_processes 8;
error_log /data1/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#specifies the value for maximum file descriptors that can be opened by this process worker_rlimit_nofile 51200
events
{
use epoll;
worker_connections 51200;
}
http
{
include mine.types;
default_type application/octet-strem;
#charset utf-8
server_names_hash_bucket_size 128k;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
#tcp_nopush on;
keepalive_timeout 30;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
limit_zone anti_attack $binary_remote_addr 10m;
#允许客户端请求的最大单文件字节数
client_max_body_size 300m;
#缓冲区代理缓冲用户端的最大字节数 可以理解为现存到本地再传给用户
client_body_size 128k;
#跟后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_time 600;
#连接成功后_等待后端服务器响应时间_其实已经进入后端的派对等候处理
proxy_read_timeout 600;
#后端回传时间_规定时间内传完所有数据
proxy_send_timeout 600;
#代理请求缓存区,保存用户的头信息以供Nginx进行规则处理
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
#缓存
proxy_temp_path /data2/proxy_temp_path;
proxy_cache_path /data2/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5;
upstream myserver_pool{
server xx.xx.xx.1:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.2:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.3:80 weight=1 max_fails=2 fail_timeout=30s;
}
upstream php_server_pool{
server xx.xx.xx.4:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.5:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.6:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.7:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.8:80 weight=1 max_fails=2 fail_timeout=30s;
}
upstream bbs_server_pool{
ip=hash;
server xx.xx.xx.9:80 max_fails=2 fail_timeout=30s;
server xx.xx.xx.10:80 max_fails=2 fail_timeout=30s;
server xx.xx.xx.11:80 max_fails=2 fail_timeout=30s;
server xx.xx.xx.12:80 max_fails=2 fail_timeout=30s;
}
upstream cms_server_pool{
server xx.xx.xx.13:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.14:80 weight=1 max_fails=2 fail_timeout=30s;
}
upstream pic_server_pool{
server xx.xx.xx.15:80 weight=1 max_fails=2 fail_timeout=30s;
server xx.xx.xx.16:80 weight=1 max_fails=2 fail_timeout=30s;
}
upstream xoyohimsg_server_pool{
server xx.xx.xx.17:3245;
server xx.xx.xx.18:3245 down;
}
#xoyo.com域名调转到www.xoyo.com
server
{
listen 80;
server_name xiyo.com;
rewrite ^/(.*) http:xoyo.com/ permanent;
acces_log /data1/logs/xoyo.com_access.log;
}
#用户中心HTTP/SSL加密浏览
server
{
listen 443;
server_name my.xoyo.com
ssl on;
ssl_cretificate my.xoyo.com.crt;
ssl_cretificate_key my.xoyo.com.key;
location /
{
proxy_pass http://php_server_pool;
proxy_set_header Host my.xoyo.com;
proxy_set_header X-Forward-For $remote_addr;
}
access_log /data1/logs/my.xoyo.com_access.log;
}
#图片服务器,不同的路径访问后端不同的服务器
server
{
listen 80;
server_name pic.xoyo.com;
location /cms/
{
proxy_pass http://cms_server_pool;
proxy_set_header Host pic.xoyo.com;
proxy_set_header X-Forward-For $remote_addr;
}
access_log /data1/logs/pic.xoyo.com_access.log;
}
#音频电台文件下载,进行简单防盗链
#limit_zone media %binary_remote_addr 10m;
server
{
listen 80;
server_name media.xoyo.com;
location /
{
proxy_pass http://cms_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
valid_reference nine blocked www.xoyo.com *.xoyo.com www.kingsoft.com *.kingsoft.com www.kingsoft.cn *.kingsoft.cn;
if ($invalid_referers){
rewrite ^/ http://www.xoyo.com;
}
}
access_log /data1/logs/media.xoyo.com_access.log;
}
#“逍遥有聊”WebIM产品的负载均衡,反向代理两种HTTP服务器
server
{
listen 80;
server_name hi.xoyo.com;
#反向代理一款定制开发的高性能消息队列HTTP服务器
location /recmessage.xoyo
{
proxy_pass http://xoyohimsg_server_pool;
proxy_set_header Host $host;
}
location /
{
proxy_pass http://php_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
}
access_log /data1/logs/hi.xoyo.com_access.log;
#论坛负载均衡并对图片、Flash、JavaScript、CSS、静态HTML进行Web缓存
server {
listen 80;
server_name bbs.xoyo.com *.bbs.xoyo.com bbs.xoyo.kingsoft.com;
location /
{
proxy_pass http://bbs_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html|shtml)$
{
proxy_cache cache_one;
proxy_cache_valid 200 10m;
proxy_cache_valid 304 1m;
proxy_cache_valid 301 302 ih;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
proxy_pass http://bbs_server_pool;
}
log_format bbs '$remote_addr $host $remote_user [$time_local] "$request"'
'"$status" $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /data1/logs/bbs.xoyo.com_access.log bbs;
}
#论坛附件反向代理,限制下载速度为256k/秒
server{
listen 80;
server_name att03.bbs.xoyo.com att02.bbs.xoyo.com att01.bbs.xoyo.com;
location /{
#限制下载速度为256k/s
limit_rate 256k;
proxy_pass http://xx.xx.xx.19;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
}
access_log off;
}
#逍遥江湖SNS社区,管理后台定位到一台服务器上,并对图片,flash,javascript,CSS进行web缓存
server
{
listen 80;
server_name hu.xoyo.com *.hu.xoyo.com;
location /
{
proxy_pass http://php_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
proxy_cache cache_one;
proxy_cache_valid 200 10m;
proxy_cache_valid 304 1m;
proxy_cache_valid 301 302 ih;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
proxy_pass http://php_server_pool;
}
location ~ ^/admincp.php
{
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
proxy_pass http://xx.xx.xx.4;
}
access_log /data1/logs/hu.xoyo.com_accsee.log;
}
}
更多Nginx相关教程见以下内容:
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里