說明
Nginx的反向代理是使用場景最多,配合分發政策,可以實作高可用和高性能的。但是nginx預設沒有一個比較完善的後端檢測機制,這點我們需要借助第三方插件。
後端健康檢查
nginx_upstream_check_module-master.zip
安裝過程
建立檔案夾
Shell>mkdir/var/cache/nginx
擷取安裝包,我們這裡使用nginx-1.8.1的穩定版本
Shell># wget http://nginx.org/download/nginx-1.8.1.tar.gz
Shell># wgethttps://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
安裝patch程式
Shell># yum–y install patch
解壓縮nginx軟體包
Shell># tarxf nginx-1.8.0.tar.gz
解壓縮更新檔包
Shell># unzipnginx_upstream_check_module-master.zip
打更新檔
Shell># cdnginx-1.8.1
Shell># patch-p1 < ../ nginx_upstream_check_module-master /check_1.7.5+.patch
編譯軟體, 編譯nginx,參數如下(按照rpm包的習慣編譯)
./configure \
--prefix=/etc/nginx \
--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.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-file-aio \
--with-http_spdy_module \
--add-module=/root/ nginx_upstream_check_module-master
安裝
Shell >make&& make install
配置檔案示例
user nginx;
worker_processes 1;
events {
use epoll
worker_connections 1024;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /var/www/html/;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_set_header x-for $remote_addr;
proxy_set_header x-server $host;
proxy_set_header x-agent $http_user_agent;
proxy_pass http://cluster1;
break;
}
}
upstream cluster1 {
server 10.10.2.31:8080;
server 10.10.2.32:8080;
check interval=3000 rise=2 fall=5 timeout=1000;
check_http_send "GET /HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}