1. 程式人生 > >Kibana 默認Web 端口 5601 改為 80 的簡單辦法

Kibana 默認Web 端口 5601 改為 80 的簡單辦法

fat exce process cat flow rules 發現 pos [1]

Kibana 安裝好後,默認的 Web 端口為 5601,輸入網址時感覺很不方便,於是萌生出將其改為 80 端口的辦法。

查看配置文件 /etc/kibana/kibana.yml,發現其定義就在第一項目,於是修改。

# Kibana is served by a back end server. This setting specifies the port to use.
# server.port: 5601
server.port: 80

接下來啟服務 (service kibana restart) ,卻發現啟動失敗,檢查日誌文件,發現如下錯誤:

FATAL { Error: listen EACCES 0.0.0.0:80
    at Object.exports._errnoException (util.js:1018:11)
    at exports._exceptionWithHostPort (util.js:1041:20)
    at Server._listen2 (net.js:1245:19)
    at listen (net.js:1294:10)
    at net.js:1404:9
    at _combinedTickCallback (internal/process/next_tick.js:83:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  cause:
   { Error: listen EACCES 0.0.0.0:80
       at Object.exports._errnoException (util.js:1018:11)
       at exports._exceptionWithHostPort (util.js:1041:20)
       at Server._listen2 (net.js:1245:19)
       at listen (net.js:1294:10)
       at net.js:1404:9
       at _combinedTickCallback (internal/process/next_tick.js:83:11)
       at process._tickCallback (internal/process/next_tick.js:104:9)

這個基本上是權限問題了,就是一般應用不允許使用 1024 內的系統端口。查看網上的解決方案,有用 nginx 組合來配置的,但這個又要花費不少時間。於是采用另一種方案,使用 iptables 轉發,將到 80 端口的請求全部轉發到 5601,而且這樣兩個端口可以同時工作,使用起來更方便了。具體的操作如下:

  • 設置 iptables
[root@ELK kibana]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5601
  • 查看 iptables,已經生效。恢復 Kibana 配置文件並啟動,訪問測試站點http://kibana.zhengyongfeng.cn,成功! 並且 http://kibana.zhengyongfeng.cn:5601 也能正常訪問,感謝 iptables 的優良設計。
[root@ELK kibana]# iptables -nv -L -t nat
Chain PREROUTING (policy ACCEPT 29 packets, 3546 bytes)
 pkts bytes target     prot opt in     out     source               destination
   82  4488 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 5601

Chain INPUT (policy ACCEPT 111 packets, 8034 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 160 packets, 10600 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 160 packets, 10600 bytes)
 pkts bytes target     prot opt in     out     source               destination
  • 上面的 iptables 規則在重啟系統生會丟失,為了永久生效,可以使用下面的辦法保存配置。
[root@ELK kibana]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

[root@ELK kibana]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.18 on Sat Nov 11 15:06:23 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [2:120]
:POSTROUTING ACCEPT [2:120]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 5601
COMMIT
# Completed on Sat Nov 11 15:06:23 2017

至此, Kibana Web 端口在 80 上的配置順利完成,利用系統已有的服務可以簡單的實現,而不用額外的組件。

小結:

  1. Kibana Web 端口可以使用 iptables 簡便的實現到 80 的轉換來解決其使用1024下的系統端口的權限問題。
  2. iptables 可以轉發的功能,是一個非常好的設計,如果在雙網上的情況下,可以實現路由功能。透徹的理解它在系統設計與搭建中會很有意義,當然還有其他功能也不錯。

參考:
[1] https://stackoverflow.com/questions/9164915/node-js-eacces-error-wen-listening-on-most-ports

Kibana 默認Web 端口 5601 改為 80 的簡單辦法