我在运行 RHEL7 的 Amazo EC2 实例上运行了 elasticsearch 1.4 和 kibana4。
Kibana4 作为独立进程运行,未部署在 nginx 等 Web 容器中。它正在侦听端口 5601。(默认端口)。我想让 kibana 监听 80 端口。
这可以在不使用nginx的情况下实现吗?如果是怎么办?
我在运行 RHEL7 的 Amazo EC2 实例上运行了 elasticsearch 1.4 和 kibana4。
Kibana4 作为独立进程运行,未部署在 nginx 等 Web 容器中。它正在侦听端口 5601。(默认端口)。我想让 kibana 监听 80 端口。
这可以在不使用nginx的情况下实现吗?如果是怎么办?
您需要设置CAP_NET_BIND_SERVICE
将非 root 进程绑定到特权端口(<1024)的功能
让 kibana 监听 80 端口:
1- 在 /etc/kibana/kibana.yml 中编辑 kibana 端口
server.port : "80"
2-运行以下命令:
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana-plugin
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana-keystore
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/node/bin/node
编辑文件 {kibana-directory}/config/kibana.yml。找到这一行:
port: 5601
并将其更改为:
port: 80
在config文件中设置80端口会触发如下错误
kibana[11777]: FATAL Error: listen EACCES: permission denied 0.0.0.0:80
,因为kibana服务默认在用户kibana下执行
您可以将用户更改为root,但这会触发以下警告
kibana[11639]: Kibana should not be run as root. Use --allow-root to continue.
所以不推荐在root用户下运行kibana服务。如果您有 Web 服务器,最好制定端口转发规则或 HTTP 重定向。
此处的完整设置:https ://www.elastic.co/guide/en/kibana/current/settings.html
这应该添加到 config/kibana.yml server.port: 80
并使用 sudo 运行 kibana 服务器。确保没有进程同时使用端口 80。