Nginx+Keepalived+Proxy_Cache 配置高可用集群和高速缓存

环境:

CentOS release 6.5 x86_64    192.168.100.90

CentOS release 6.5 x86_64    192.168.100.91

  1. 在主备服务器上部署Nginx

  1. 下载

#wget http://nginx.org/download/nginx-1.6.3.tar.gz

#  wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz

  1. 安装

# yum install gcc openssl-devel pcre-devel zlib-devel

# tar -zxvf ngx_cache_purge-2.3.tar.gz

# tar –zxvf nginx-1.6.3.tar.gz

# cd nginx-1.6.3

# ./configure \

--prefix=/usr \

--sbin-path=/usr/sbin/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx/nginx.pid  \

--lock-path=/var/lock/nginx.lock \

--user=nginx \

--group=nginx \

--with-http_stub_status_module \

--with-http_ssl_module \

--with-http_flv_module \

--with-http_gzip_static_module \

--with-http_realip_module  \

--http-client-body-temp-path=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

--add-module=../ngx_cache_purge-2.3

# vim /etc/nginx/nginx.conf

user  nginx nginx;

worker_processes  16;


#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;


worker_rlimit_nofile 61200;


pid        /var/run/nginx.pid;



events {

use epoll;

worker_connections  61200;

}




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;

charset          utf-8;


server_names_hash_bucket_size    128;


client_header_buffer_size   32k;


large_client_header_buffers  4  32k;


client_max_body_size 300M;



sendfile        on;

tcp_nopush     on;

tcp_nodelay    on;


client_body_buffer_size 512k;

proxy_connect_timeout   5;

proxy_read_timeout     60;

proxy_send_timeout  5;

proxy_buffer_size   16k;

proxy_buffers  4 64k;

proxy_busy_buffers_size   128k;

proxy_temp_file_write_size 128k;

#keepalive_timeout  0;

keepalive_timeout  60;


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;



proxy_temp_path      /var/tmp/proxy_temp_dir 1 2;

proxy_cache_path     /var/tmp/proxy_cache_dir  levels=1:2 keys_zone=cache_one:400m inactive=1d max_size=30g;


#upstream backend {

#ip_hash;

# server 192.168.100.90:8080;

#server 192.168.100.91:8080;

# }


upstream backend {

server 192.168.100.90:8080 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.100.91:8080 weight=1 max_fails=2 fail_timeout=30s;

}




server {

listen       80;

server_name  localhost;


#charset koi8-r;

charset utf-8;

#access_log  logs/host.access.log  main;

location / {

index index.jsp index.htm index.html;

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_cache cache_one;

proxy_cache_valid 200 304 12h;

proxy_cache_key $host$uri$is_args$args;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http://backend;

expires 1d;

}


#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;

}


# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#    proxy_pass   http://127.0.0.1;

#}


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

#    root           html;

#    fastcgi_pass   127.0.0.1:9000;

#    fastcgi_index  index.php;

#    fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;

#    include        fastcgi_params;

#}


location ~ .*\.(php|jsp|cgi)?$ {

proxy_set_header Host $host;

proxy_set_header  X-Forwarded-For $remote_addr;

proxy_pass http://backend;

}


#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;




# deny access to .htaccess files, if Apache‘s document root

# concurs with nginx‘s one

#

#location ~ /\.ht {

#    deny  all;

#}

}





#

# another virtual host using mix of IP-, name-, and port-based configuration

#

#server {

#    listen       8000;

#    listen       somename:8080;

#    server_name  somename  alias  another.alias;


#    location / {

#        root   html;

#        index  index.html index.htm;

#    }

#}


# HTTPS server

#

#server {

#    listen       443 ssl;

#    server_name  localhost;


#    ssl_certificate      cert.pem;

#    ssl_certificate_key  cert.key;


#    ssl_session_cache    shared:SSL:1m;

#    ssl_session_timeout  5m;


#    ssl_ciphers  HIGH:!aNULL:!MD5;

#    ssl_prefer_server_ciphers  on;


#    location / {

#        root   html;

#        index  index.html index.htm;

#    }

#}

}



Keepalived

本文出自 “Smurf Linux运维” 博客,请务必保留此出处http://jin771998569.blog.51cto.com/2147853/1640495

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。