Haproxy 代理 Kibana 以及 Nginx 子目錄反向代理 Kibana(Haproxy 代理Nginx)
公司需求:
訪問 xxx.com/kibana,代理到後端 kibana x.x.x.x:5601
方案:
haproxy /kibana --> nginx 80埠 --> 後端 kibana
具體實現:
1、首先,如果需要 實現 https://example.com/kibana,需要編輯 kibana.yml,修改如下配置,並重啟kibana
server.basePath: "/kibana"
2、Nginx代理 kibana 需要進行 rewrite,配置如下(kibana.conf):
server {
listen 80;
server_name x.x.x.x;
access_log /var/log/nginx/access-kibana.log;
error_log /var/log/nginx/error-kibana.log;
location /kibana {
proxy_pass http://x.x.x.x:5601/;
rewrite ^/kibana/(.*)$ /$1 break;
}
}
3、Haproxy 代理到 nginx 80,配置如下:
frontend main *:5000
acl kibana path_beg -i /kibana
use_backend kibana_bk if kibana
default_backend app
backend app
balance roundrobin
server nginx x.x.x.x:8888 check
backend kibana_bk
balance roundrobin
server kibana_bk x.x.x.x:80 check
補充:
公司網路的環境限制,需要haproxy代理到 nginx,再代理到後端。
如果網路環境可以, 直接 haproxy 代理到 kibana,或者 nginx代理到 kibana(參考上面的nginx配置)
下面說下,haproxy 代理到 kibana
1、同樣,如果需要 實現 https://example.com/kibana,需要編輯 kibana.yml,修改如下配置,並重啟kibana
server.basePath: "/kibana"
2、haproxy 代理 kibana,配置如下:
frontend main *:5000
acl kibana path_beg -i /kibana
use_backend kibana_bk if kibana
default_backend app
backend app
balance roundrobin
server nginx x.x.x.x:8888 check
backend kibana_bk
balance roundrobin
reqrep ^([^\ ]*\ /)kibana[/]?(.*) \1\2
server kibana_bk x.x.x.x:5601 check