公司要求,线上solr、kibana要求只能通过域名进行访问,禁止用ip+端口进行登录访问,那么,下面介绍下我是如何实现的
1、禁止ip,允许域名访问
如下图,默认安装好nginx,不让ip方式访问,但是可以通过域名方式访问:
域名可以访问:
直接贴配置文件:443端口配置一样
cat nginx.conf
worker_processes
1
;
events {
worker_connections
1024
;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80default; #配置此段表示用IP或其他域名访问时直接跳转到www.baidu.com,也可直接返回403
server_name _;
#rewrite ^ http://www.baidu.com$request_uri?;return403;
}
server {
listen 80;
server_name www.kalaok.com;
location / {
root html;
index index.html index.htm;
}
error_page 500502503504 /50x.html;
location = /50x.html {
root html;
}
}
}
2、solr只允许域名方式访问
由于考虑线上solr数据的安全和重要性,禁止运维和开发人员随意登录进行相关数据增删改操作,我们需要针对solr服务器进行安全访问控制。
配置iptables如下:
[root@localhost conf]# cat /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Thu Jun 1110:58:092015 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1310:141998] -A INPUT -i eth1 -j LOG --log-prefix "BANDWIDTH_IN:" --log-level 7 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #202.106.149.226为公司公网地址 -A INPUT -s 202.106.149.226 -p tcp -m tcp --dport 8888 -j DROP ######### 1113 ########################### -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP ########################################## # #-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT #-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT #-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT #-A INPUT -s 124.42.77.106/32 -p tcp -m tcp --dport 5666 -j ACCEPT #-A INPUT -s 124.42.77.106/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A INPUT -p tcp -m tcp --dport 3306 -j DROP -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -o eth1 -j LOG --log-prefix "BANDWIDTH_OUT:" --log-level 7 -A FORWARD -i eth1 -j LOG --log-prefix "BANDWIDTH_IN:" --log-level 7 -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A OUTPUT -o eth1 -j LOG --log-prefix "BANDWIDTH_OUT:" --log-level 7 COMMIT # Completed on Thu Jun 1110:58:092015
reload一下iptables,可以看到我们无法再使用ip请求数据了,下面实现通过nginx使用固定域名访问,直接贴配置:
cat solr.conf
server {
listen
80
;
## define use url to visit
server_name dsolr.pharmacodia.com;
location /solr {
#keep with the server proxy name below
allow 202.106.149.226;
allow 10.30.48.99;
allow 10.173.24.183;
deny all;
auth_basic "data solr access";
auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
proxy_pass http://10.26.241.96:8888/solr; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $Proxy_add_x_forwarded_for;
}
}
3、nginx添加登录认证
如下图,实现起来很简单:
直接贴配置文件,跟上面的solr登录认证权限一样,需要使用htpasswd工具生成密码文件
如果没有htpasswd命令使用以下命令安装
yum -y install httpd-tools
htpasswd -c solr.passd admin #输入两次密码
直接在server里添加
server {
listen 80;
server_name www.kalaok.com;
auth_basic "data solr access";
auth_basic_user_file /usr/local/nginx/conf/solr.passwd;
location / {
root html;
index index.html index.htm;
}
error_page 500502503504 /50x.html;
location = /50x.html {
root html;
}
}
原文:https://www.cnblogs.com/qianjingchen/p/10342823.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!