Hi 大家好:
最近再搭 ELK 8.10 cluster,再設定 nginx reverse proxy + kibana 的時候發生異常,
我有三台 es , 一台 nginx 反向代理
|----|| kibana-01 -- es-01 || # instance01
client -> nginx |----|| kibana-02 -- es-02 || # instance02
|----|| kibana-03 -- es-03 || # instance03
nginx 是獨立機器,共四台機器
因為我希望做高可用設定,我不希望 instance01 死掉的時候,完全訪問不了,
所以我才在面搭了 nginx 要做反向代理。
設定一台反向代理沒有問題,
可是當兩台以上的時候就會出錯。
瀏覽器輸入完密碼後,會跳轉出現錯誤訊息 Too_many_directors
然後又回到 kibana 的 xpack 登入密碼的畫面,
以下是我的 ngnix 設定
upstream backend_servers {
server 172.31.20.227:5601;
server 172.31.18.79:5601 ;
}
server {
listen 80 default_server ;
access_log /var/log/nginx/access_ELK.log;
error_log /var/log/nginx/error_ELK.log;
location / {
proxy_pass http://backend_servers ;
# proxy_pass http://172.31.18.79:5601 ; 只有一台的情況可以。
# proxy_password http://43.207.225.37:5601 ;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header connection 'update';
proxy_set_header Host $host;
proxy_cache_bypass $http_update;
}
}
error_ELK.log
XXXXX - - [23/Sep/2023:14:02:26 +0000] "GET /ui/fonts/inter/Inter-Medium.woff2 HTTP/1.1" 304 0 "http://`nginx_IP`/login?next=%2Fapp%2Fhome" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
XXXXX - - [23/Sep/2023:14:02:26 +0000] "GET /ui/fonts/roboto_mono/RobotoMono-Regular.ttf HTTP/1.1" 304 0 "http://`nginx_IP`/login?next=%2Fapp%2Fhome" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
XXXXX - - [23/Sep/2023:14:02:26 +0000] "GET /ui/fonts/inter/Inter-SemiBold.woff2 HTTP/1.1" 304 0 "http://`nginx_IP`/login?next=%2Fapp%2Fhome" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
試試看把這個
upstream backend_servers {
server 172.31.20.227:5601;
server 172.31.18.79:5601 ;
}
改為
upstream backend_servers {
ip_hash;
server 172.31.20.227:5601;
server 172.31.18.79:5601 ;
}
這樣會讓來自同一個 IP 的你,永遠使用同一台 Kib,而不是輪流,不致影響登入 session。