ElasticSearch 通過nginx做HTTP驗證

奮程式序猿發表於2018-03-19

在ElasticSearch 的設定檔案中如果設定了

network.host: 0.0.0.0

則表示ElasticSearch 服務是公開的任何ip都可以訪問ElasticSearch 服務。這樣肯定是不安全的。

我們可以通過安裝 X-Pack這個然間來做對ElasticSearch 的登陸驗證,但是這個是收費的只可以免費使用30天。

還有一種方法也是我們常用就是使用nginx的反向代理服務同時使用Http-basic模組來做HTTP驗證。

在nginx 下新增配置檔案內容如下

 

#upstream dev.es.daojia.com.cn {
#        //如果有多臺伺服器可以在這裡配置upstream輪詢
#     }

server{
        server_name dev.es.xxx.com.cn;
        location /{
            proxy_http_version 1.1;
            proxy_set_header   Connection          "";
            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 "login";
            auth_basic_user_file /etc/nginx/conf.d/htpasswd;
            autoindex on;

            proxy_pass http://127.0.0.1:9200; 
        }
        access_log  /data/logs/nginx/dev.es.xxx.com.cn.access.log  main;
    error_log   /data/logs/nginx/nginx-error.log;

}
proxy_pass 表示代理目標
auth_basic_user_file 表示賬號密碼存放的文字地址 
通過http://www.matools.com/htpasswd 來生成採用Crypt (all Unix servers)  方式密的密碼

 

 




 可以看到 使用者名稱為明文密碼為加密後的用:分隔

將其複製到我們設定的目錄檔案中。

然後修改ElasticSearch 的配置network.host

如果nginx和ElasticSearch 在同一個伺服器上可以設定為

network.host: 127.0.0.1

如果不在同一個機器上就將  network.host選項設定為nginx伺服器的ip 就可以了。

然後重啟nginx 和 ElasticSearch 

然後我們在通過ip加埠訪問 ElasticSearch 就無法訪問了。

在輸入我們配置的域名看一下

輸入賬號es123和密碼es123 就可以了

相關文章