目前使用的Es版本為7.5版本, 在7.X版本中已經可以免費的使用x-pack進行用戶驗證了
1. 修改elasticsearch主節點配置文件:
action.destructive_requires_name: true
http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type xpack.security.enabled: true xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: true
action.destructive_requires_name: true: 設置之后只限於使用特定名稱來刪除索引,使用_all 或者通配符來刪除索引無效(上述中說明配置文件中禁止后此方式不能使用)】
注意:上面對於跨域的配置,下面使用elasticsearch-head進行連接的時候會用到 使用到的是基礎驗證類型
2. 創建身份認證
#系統自動生成密碼 ./bin/elasticsearch-setup-passwords auto #自定義密碼 ./bin/elasticsearch-setup-passwords interactive
3. 重啟elasticsearch服務
systemctl restart elasticsearch
Kibana配置:
elasticsearch.username: "elastic" elasticsearch.password: "具體密碼"
配置head插件
1. 安裝
GitHub地址:https://github.com/zhaoyunxing92/elasticsearch-head.git
具體安裝可以看說明,這里簡單說一下:
git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm run start open http://localhost:9100/
打開服務器ip地址,訪問即可: http://59.132.16.217:9100

可以修改_site/app.js 大概4374行左右,指定默認訪問的集群地址
app.App = ui.AbstractWidget.extend({ 4368 defaults: { 4369 base_uri: null 4370 }, 4371 init: function(parent) { 4372 this._super(); 4373 this.prefs = services.Preferences.instance(); 4374 this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://59.132.16.127:9200"; 4375 if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) { 4376 // XHR request fails if the URL is not ending with a "/" 4377 this.base_uri += "/"; 4378 } 4379 if( this.config.auth_user ) { 4380 var credentials = window.btoa( this.config.auth_user + ":" + this.config.auth_passwo rd );
2.配置
elasticsearch安裝x-pack插件之后,head插件就無法使用了,因為x-pack中加入了安全模塊(security機制),這個時候需要在elasticseach.yml中再增加下面一行配置即可解決
http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type 上面提到的內容
這樣訪問頁面的時候,就需要帶上用戶名和密碼進行訪問
http://59.132.16.127:9100/?auth_user=elastic&auth_password=123456 # 指定用戶名和密碼
auth_user
auth_password
現在已經添加了驗證, 這個時候, 如果我們不想暴露自己的端口,可以使用nginx進行一次轉發,對外只提供80端口
server { listen 80; server_name es.*.com; #公網域名地址 location / { auth_basic "secret"; auth_basic_user_file /usr/local/nginx/conf/htpasswd; proxy_pass http://localhost:9100; proxy_set_header Host $host:9100; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Via "nginx"; } }
具體賬號密碼配置,可參考:nginx之訪問控制
我們來禁用9100端口,只在127.0.0.01:9100,配合nginx使用即可
elasticsearch-head/Gruntfile.js 在connect –>server–>options下添加hostname:’127.0.0.1’ 允許本地ip可以訪問 connect: { server: { options: { hostname: '127.0.0.1', port: 9100, base: '.', keepalive: true } } }
添加開機啟動:
vim /etc/rc.local
/usr/local/elasticsearch-head/node_modules/grunt/bin/grunt server &
