說明
tengine官方說明文檔
nginx 對於後端RS的檢查機制不完善
所有用Tengine進行反向代理
一、反向代理
1.定義後端real-server(在http段)
upstream static_server {
server 192.168.17.175:80 weight=5;
server 192.168.17.176:80 weight=3;
}
upstream basic_server {
server 192.168.17.175:80 weight=2;
server 192.168.17.176:80 weight=5;
}
2.location 匹配到自定義內容 代理到對應的real-server(server段)
server {
listen 80 default_server;
server_name _;
location ~ ^/images {
index index.php index.html;
proxy_pass http:
}
location ~* .(jpg|png|jpeg|gif) {
proxy_pass http:
}
#匹配到/youxi 則全部代理到 http://basic_server/index.html;
location ~ /youxi {
rewrite ^(.*)$ /index.html break;
proxy_pass http:
}
二、real-server健康檢測
模塊
nginx_upstream_check_module-master
使用
upstream塊裏可以用多個server選項配置多個後端服務器,同時還可配置對後端服務器的健康狀態檢查,
可以在server後面加上
max_fails(proxy_next_upstream指定檢查策略,默認爲返回超時爲失敗)和
fail_timeout參數實現;
也可以用health_check選項來實現
health_check可以指定的參數較多,不過需要定義在location上下文中。
另外,可以指定代理服務器自身作爲備份server,當所有後端服務器都宕機時,對外提供維護提示頁面。
指定負載均衡策略
主要有round_robin(加權輪詢,默認)、
hash、ip_hash、least_conn(最少連接)
least_time(最少響應時間,商業版本)
策略定義在upstream上下文即可;
1.對real-server進行健康檢測(upstream中)
upstream basic_server {
server 192.168.17.175:80 weight=2;
server 192.168.17.176:80 weight=5;
check interval=3000 rise=2 fall=5 timeout=2000 type=http;
check_http_expect_alive http_2xx http_3xx;
}
2.健康檢測頁面
server {
location /status {
check_status;
}
}