如何配置Nginx反向代理用于Kibana?


介绍

在当今世界,数据是每个行业的支柱。为了理解所有这些数据,人们使用像Kibana这样的工具来可视化和分析数据。

然而,单独运行Kibana常常会导致性能问题和安全漏洞。这就是Nginx反向代理派上用场的地方。

准备Nginx反向代理配置的环境

在服务器上安装Nginx

在服务器上安装Nginx之前,务必确保已安装所有必要的依赖项。这可以通过运行系统更新,然后使用发行版的包管理器安装依赖项来完成。

安装完这些后,您可以继续安装Nginx本身。安装过程可能因发行版而异,但通常包括将Nginx存储库添加到您的系统中,然后运行安装命令。

设置域名和SSL证书

为了使用反向代理配置中的HTTPS,您需要为您的网站设置域名和SSL证书。这包括从GoDaddy或Namecheap等注册商处获取域名,然后从LetsEncrypt或Comodo等提供商处获取SSL证书。获得这两样东西后,您就可以配置Nginx在反向代理配置中使用它们。

在服务器上安装Kibana

Kibana是使用Node.js构建的,并将其作为依赖项。因此,在安装Kibana本身之前,如果服务器上不存在Node.js,我们必须先安装它。这可以通过添加发行版的相关存储库,然后运行安装命令来完成。

完成后,我们可以从其官方网站下载Kibana本身,并将其解压到我们的服务器上。然后,我们应该创建一个符号链接或将其移动到我们所需的安装目录中,以便稍后在我们的配置文件中轻松引用它。

将Nginx配置为Kibana的反向代理

创建Nginx配置文件

将Nginx配置为Kibana的反向代理的第一步是创建一个Nginx配置文件。此文件将包含允许Nginx充当Kibana反向代理的必要设置。

可以使用任何文本编辑器(例如vi或nano)创建配置文件,并应将其保存为.conf扩展名。创建文件后,应将其放置在/etc/nginx/conf.d/目录中。

向配置文件添加代理设置

创建配置文件后,下一步是向其中添加适当的代理设置。以下示例显示如何配置Nginx以充当Kibana的反向代理:```

server { listen 80;

server_name domain.com; location / {

proxy_pass https://127.0.0.1:5601/; proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

auth_basic "受限内容"; auth_basic_user_file /etc/nginx/.htpasswd; } }

此配置在端口80上设置一个HTTP服务器,侦听来自domain.com的请求并将它们代理到在https://127.0.0.1:5601/上运行的Kibana。它还使用位于/etc/nginx/.htpasswd的.htpasswd文件设置基本身份验证。

测试配置

将必要的设置添加到配置文件后,您需要测试新的设置。为此,您可以使用curl或您选择的Web浏览器并访问您的域名(例如http://domain.com)。

如果一切正常,您应该在浏览器中看到Kibana界面。将Nginx配置为Kibana的反向代理可能有点棘手,但是通过仔细规划和关注细节,可以设置一个有效且安全的反向代理配置,使远程用户可以轻松访问Kibana资源。

高级配置选项

使用Nginx和Kibana进行身份验证

默认情况下,Kibana不包含任何内置身份验证机制。但是,为了保护对Kibana实例的访问,您可以使用Nginx的内置基本HTTP身份验证功能。基本HTTP身份验证允许您设置用户名和密码来访问Kibana实例。

要启用基本HTTP身份验证,您需要修改Kibana代理的Nginx配置文件。在您的域名的服务器块中,添加以下几行:

auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd;   

第一行设置一条消息,当提示用户输入凭据时将显示该消息。第二行指定包含加密用户名和密码的密码文件。

要使用用户帐户和密码创建.htpasswd文件,请使用以下`htpasswd`命令:

sudo htpasswd -c /etc/nginx/.htpasswd exampleuser     

`-c`选项会在文件尚不存在时创建一个新文件。将`exampleuser`替换为您选择的任何用户名。

使用多个Kibana实例进行负载均衡

如果您在集群环境中运行多个Kibana实例,建议使用Nginx作为负载均衡器。负载均衡将传入的网络流量分配到不同的服务器实例,以优化资源使用并提高可用性。

要将Nginx配置为多个Kibana实例的负载均衡器,请修改Nginx配置文件如下:

upstream kibanapool { 
server 10.0.0.1:5601; server 10.0.0.2:5601; } 
server { listen 80; 
server_name your-domain.com; location / { 
proxy_pass http://kibanapool; proxy_set_header Host $host; } }  

`upstream`块定义了一组Kibana实例及其IP地址。然后,`server`块指定侦听端口和域名,以及将请求转发到上游组的`proxy_pass`设置。

使用Nginx缓存静态文件

Nginx还可以缓存静态文件(例如图像、CSS样式表和JavaScript脚本)以提高性能。缓存允许频繁或重复请求相同的文件从内存中提供服务,而不是每次都从磁盘读取。要在Nginx中启用静态文件的缓存,请修改您的配置文件如下:

http { ... # Define a path for where to store cached data on disk 
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; ... server { 
listen 80; server_name your-domain.com; 
location / { # Enable caching for all types of static files 
proxy_cache my_cache; proxy_cache_valid 200 60m; # Cache responses with HTTP status code 200 OK for up to 60 minutes 
add_header X-Cache-Status $upstream_cache_status; # Add a header indicating whether a response was served from cache proxy_pass https://127.0.0.1:5601; # Forward requests to Kibana } ... } }  

`proxy_cache_path`指令指定一个目录路径,缓存数据将存储在磁盘上。`proxy_cache`指令启用对所有类型静态文件的缓存。

`proxy_cache_valid`指令根据其HTTP状态代码设置应缓存响应多长时间。`add_header`指令添加自定义标头以指示响应是否来自缓存。

结论

将Nginx配置为Kibana的反向代理可以极大地增强Web应用程序的性能和安全性。通过通过Nginx重定向流量,您可以利用其高级缓存和负载均衡功能来改善用户体验。此外,使用SSL证书进行SSL加密可以帮助保护敏感数据免受潜在的安全漏洞。

更新于:2023年7月11日

浏览量1K+

开启你的职业生涯

完成课程获得认证

开始学习
广告