nginx實現反向代理+健康檢測

說明
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://static_server;
        }
        location ~* .(jpg|png|jpeg|gif) {
                proxy_pass http://static_server;
        }
        #匹配到/youxi  則全部代理到 http://basic_server/index.html;
        location ~ /youxi {
                rewrite ^(.*)$ /index.html break;
                proxy_pass http://basic_server/index.html;
        }

二、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;
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章