背景: 集团要求kibana必须要有密码验证,但是kibana本身并没有验证功能,实现需要用xpack,然而xpack不是免费的。查阅资料后发现,nginx可以做网站的登录验证功能。
nginx相关知识:对于nginx,我了解最多的是反向代理和正向代理。
- 反向代理就是nginx作为服务器的代理,隐藏了服务器的信息。
- 正向代理就是nginx作为客户端的代理,隐藏了客户端的信息。
nginx是一个静态web服务器,tomcat是动态web服务器,两者配合可以部署动静分离的网站。此外,nginx的一个重要用途是网站服务器的负载均衡,负载均衡主要会用到upstream指令。
nginx配置文件结构:
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
- server块作用于虚拟服务器。
- location块指定访问路由,这个访问路由指的是在一个server域内的路由。
在本次任务中,我用到了server块和location块,我使用docker安装nginx,这个nginx中有个默认的配置文件的http块中有个include指令,该指令可以导入其他配置文件进入该默认配置文件。所以我只需要写好server块里的内容,运行时会自动导入到默认配置文件的http块中。server块中的listen指令可以指定监听的端口,server_name指令指定服务的外部访问地址。
为了达到加密的效果,需要用到httpd工具生成密码。生成的密码放到指定文件夹,然后在location块里的auth_basic和auth_basic_user_file指令指定提示文本和密码存放的文件。
此外,还可以用upstream块来重定向访问,比如浏览器访问服务器a但其实访问的是服务器b的资源。