# cd /etc/profile.d
# touch jdk.sh
# cat > jdk.sh <<EOF
export JAVA_HOME=/iflytek/java/jdk1.8.0_251
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:\$JRE_HOME/lib:$CLASSPATH
export
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
# cat /etc/profile.d/jdk.sh
# source /etc/profile.d/jdk.sh
# chmod +x /iflytek/java/jdk1.8.0_251/bin/java
# logout
# java -version
3、调整系统参数:
# vim /etc/security/limits.conf,末尾新增如下代码:
* soft nofile 102431
* hard nofile 102431
* soft nproc 102431
* hard nproc 102431
# logout
# ulimit -n
# vim /etc/sysctl.conf,末尾新增如下代码:
vm.max_map_count=655360
# sysctl -p
4、创建普通用户esuser,并对相关目录授权:
# adduser esuser
# chown -R esuser:esuser /iflytek/data/elasticsearch-5.6.8/
# chown -R esuser:esuser /iflytek/server/elasticsearch-5.6.8/
5、修改elasticsearch.yml配置文件:
# vim /iflytek/server/elasticsearch-5.6.8/config/elasticsearch.yml
network.host: 192.168.0.202
# \grep "network.host" /iflytek/server/elasticsearch-5.6.8/config/elasticsearch.yml
6、启动ES:
# chmod +x /iflytek/server/elasticsearch-5.6.8/bin/elasticsearch
# su - esuser -c "/iflytek/server/elasticsearch-5.6.8/bin/elasticsearch &" &> /tmp/elasticsearch.txt
# tail -f /tmp/elasticsearch.txt
# ps -ef | grep elasticsearch | grep -v grep
7、浏览器访问9200端口:
192.168.0.202:9200
192.168.0.202:9200/_cat
说明:能正常访问页面
三、部署Nginx:
1、安装Nginx和相关工具:
# yum -y install epel-release
# yum -y install nginx httpd-tools
2、创建页面登录认证用户admin和对应密码文件:
# htpasswd -c /etc/nginx/.htpasswd admin
# cat /etc/nginx/.htpasswd
说明:密码123456加密后保存在/etc/nginx/.htpasswd文件中。
3、修改nginx.conf配置文件,在http配置段内新增如下代码:
# vim /etc/nginx/nginx.conf
upstream elasticsearch {
server localhost:9200;
server {
listen 9201;
server_name 192.168.0.202;
# 认证提示框的banner信息
auth_basic "Welcome to Elasticsearch";
# 使用htpasswd创建的密码文件位置
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://elasticsearch;
# 重定向后的请求会增加一个名为Host的header,包含目标IP
proxy_set_header Host $host;
# 重定向后的请求会增加一个名为X-Real-IP的header,包含请求源IP
proxy_set_header X-Real-IP $remote_addr;
# 重定向后的请求会增加一个名为X-Forwarded-For的header,记录X-Forwarded-For信息
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
说明:
(1)proxy_set_header指令用于在Nginx反向代理服务器上设置请求头。Host是HTTP协议中的一个请求头,表示请求的目标主机名或IP地址。在使用反向代理时,代理服务器需要知道客户端请求的目标服务器地址,因此要在请求头中包含Host信息。$host是Nginx内置变量,表示请求中的域名部分。通过将Host设置为$host,Nginx会将请求的域名部分作为Host请求头发送到目标服务器,从而正确地将请求路由到对应的虚拟主机或域名下的应用程序。
(2)X-Real-IP是一个自定义的请求头名称,$remote_addr是Nginx内置变量,表示客户端的真实IP地址。因此,proxy_set_header X-Real-IP
$remote_addr的含义是将客户端的真实IP地址记录到X-Real-IP请求头中,并将该请求头传递给后端的upstream服务器,使得后端服务器能获取到客户端真实的IP地址信息。当Nginx作为反向代理时,它会将客户端请求转发给后端的upstream服务器。在这个过程中,upstream服务器收到的源IP是Nginx服务器的IP地址而不是客户端的IP地址,导致后端服务器无法获取真实的客户端IP地址,无法实现一些IP相关的功能,例如IP黑名单等。
(3)X-Forwarded-For是一个自定义的请求头名称,$proxy_add_x_forwarded_for是Nginx内置变量,表示在代理链中已有的X-Forwarded-For的值,并且会在它后面添加客户端的IP地址。这个指令的作用是将客户端的真实IP地址信息附加在请求头中,通过代理服务器转发给后端的服务器,以便于后端服务器获取客户端的真实IP地址,从而实现一些IP相关的功能,例如IP黑名单等。使用$proxy_add_x_forwarded_for会将客户端IP地址附加在已有的X-Forwarded-For字段后,并以逗号分隔,如果没有X-Forwarded-For字段则会创建该字段。在进行多层代理时也能够更容易地追踪到客户端的真实地址,提高可靠性。
4、检查配置文件语法并启动Nginx:
# systemctl start nginx
# ps -ef | grep nginx
四、配置ES:
1、停止ES:
# ps -ef | grep elasticsearch | grep -v grep
2、修改elasticsearch.yml配置文件:
# vim /iflytek/server/elasticsearch-5.6.8/config/elasticsearch.yml
network.host: localhost
\grep "network.host" /iflytek/server/elasticsearch-5.6.8/config/elasticsearch.yml
说明:避免外部用户通过网络直接访问到ES的9200端口,需要将服务绑定localhost。
3、启动ES:
# su - esuser -c "/iflytek/server/elasticsearch-5.6.8/bin/elasticsearch &" &> /tmp/elasticsearch.txt
# tail -f /tmp/elasticsearch.txt
# ps -ef | grep elasticsearch | grep -v grep
# ss -tunlp | grep 9200
五、效果测试:
1、浏览器无法直接访问http://192.168.0.202:9200
2、浏览器访问Nginx代理,http://192.168.0.202:9201,输入用户名admin和密码123456