公司要求,线上solr、kibana要求只能通过域名进行访问,禁止用ip+端口进行登录访问,那么,下面介绍下我是如何实现的

1、禁止ip,允许域名访问

  如下图,默认安装好nginx,不让ip方式访问,但是可以通过域名方式访问:

  域名可以访问:

  直接贴配置文件:443端口配置一样

cat nginx.conf
worker_processes ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ;
server {
listen default; #配置此段表示用IP或其他域名访问时直接跳转到www.baidu.com,也可直接返回403
server_name _;
#rewrite ^ http://www.baidu.com$request_uri?;
return ;
}
server {
listen ;
server_name www.kalaok.com;
location / {
root html;
index index.html index.htm;
}
error_page /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 ::
*filter
:INPUT DROP [:]
:FORWARD ACCEPT [:]
:OUTPUT ACCEPT [:]
-A INPUT -i eth1 -j LOG --log-prefix "BANDWIDTH_IN:" --log-level
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#202.106..226为公司公网地址
-A INPUT -s 202.106.149.226 -p tcp -m tcp --dport -j DROP ######### ###########################
-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 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
#-A INPUT -s 124.42.77.106/ -p tcp -m tcp --dport -j ACCEPT
#-A INPUT -s 124.42.77.106/ -p tcp -m tcp --dport -j ACCEPT
-A INPUT -p tcp -m tcp --dport -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -o eth1 -j LOG --log-prefix "BANDWIDTH_OUT:" --log-level
-A FORWARD -i eth1 -j LOG --log-prefix "BANDWIDTH_IN:" --log-level
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o eth1 -j LOG --log-prefix "BANDWIDTH_OUT:" --log-level
COMMIT
# Completed on Thu Jun ::

  reload一下iptables,可以看到我们无法再使用ip请求数据了,下面实现通过nginx使用固定域名访问,直接贴配置:

 cat solr.conf 

server {
listen ;
## 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 /usr/local/nginx/conf/solr.passwd admin #输入两次密码
直接在server里添加
server {
listen ;
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 /50x.html;
location = /50x.html {
root html;
}
}

  如果想下载站点资源,就需要在后面加上认证参数,如:--http-user=admin --http-passwd=xxxxxx

nginx禁止ip登录,只允许域名访问的更多相关文章

  1. Nginx禁止IP访问,只允许域名访问

    Nginx禁止IP访问,只允许域名访问 我们在使用nginx的过程中会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了. 1.直接返回403错误 server { listen de ...

  2. 设置nginx禁止IP直接访问,只能通过指定的域名访问

    nginx的版本是1.2.1. 设置配置文件disableip.conf: server {     listen 80;     server_name _;     return500; } 这是 ...

  3. Linux 如何设置只允许域名访问站点而禁止IP访问站点

    最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...

  4. Nginx 禁止IP访问

    我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了 ...

  5. Nginx禁止ip访问或IP网段访问方法

    Nginx禁止ip访问可以防止指定IP访问我们的网站,本例子可以实现是防止单IP访问或IP网段访问了,非常的有用我们一起来看看吧. 常用的linux做法 iptables参考规则  代码如下 复制代码 ...

  6. IIS、nginx、apache只允许域名访问配置

    您开启WAF后,攻击者只能看到WAF的IP,不能看到您的IP,攻击者通过域名访问您的网站时,就会根据规则拦截. 但是如果您的网站可以输入IP地址直接访问,是无法达到防御效果的.比如(http://42 ...

  7. [转帖]nginx 禁止ip访问以及禁止post方法的简单方法

    nginx禁止IP访问站点的设置方法 http://www.512873.com/archives/471.html http://www.512873.com/archives/312.html c ...

  8. nginx 只允许域名访问,禁止IP访问

    在nginx中为了防止,通过ip地址或者没有备案的域名代理到nginx上,可以在nginx中配置来阻止这一操作 #只可以用域名访问(此处的server是新增,并不是在原有的server基础上修改),默 ...

  9. nginx只允许域名访问,禁止ip访问

    背景:为什么要禁止ip访问页面呢?这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生. 解决方法:这里介绍修改配置文 ...

随机推荐

  1. 关于Docker开通远程访问端口2375

    一.使用版本:docker for windows 18.06,安装过程略,具体如下: 二.开通远程访问端口2375,只需要设置一下即可,如下图:

  2. js 设备判断(移动端pc端 安卓ios 微信)

    苹果安卓判断 $(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.in ...

  3. C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖

    昨天我旁边小姐姐遇到一个问题,就是在执行for循环往list添加数据的时候,前面的数据信息总是被后面的数据信息所覆盖.  这样编写就会造成这样的数据效果:(所有的数据都会被覆盖)     问题原因:对 ...

  4. c++11の数据竞争和互斥对象

    一.数据竞争的产生 在下面例子中: void function_1() { ; i < ; i++) { std::cout << "from function 1:&qu ...

  5. Mac下使用国内镜像安装Homebrew

    First MBP上的brew很老了,就想把brew更新一下,顺便安装一下NodeJs.无奈更新的过程一直卡在网络下载,毫不动弹.想想,应该是Repo访问不到的原因,于是重装brew. 根据官网上的方 ...

  6. python基础语法、数据结构、字符编码、文件处理 练习题

    考试范围 '''1.python入门:编程语言相关概念2.python基础语法:变量.运算符.流程控制3.数据结构:数字.字符串.列表.元组.字典.集合4.字符编码5.文件处理''' 考试内容 1.简 ...

  7. Windows安装Git

    一.安装Git for Windows(又名msysgit)  下载地址: https://git-for-windows.github.io/  在官方下载完后,安装到Windows Explore ...

  8. 六招轻松搞定你的CentOS系统安全加固

    Redhat是目前企业中用的最多的一类Linux,而目前针对Redhat攻击的黑客也越来越多了.我们要如何为这类服务器做好安全加固工作呢?  一.  账户安全 1.1 锁定系统中多余的自建帐号 检查方 ...

  9. matplotlib绘图的基本操作

    转自:Laumians博客园 更简明易懂看Matplotlib Python 画图教程 (莫烦Python)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili. ...

  10. 04-JavaScript之常见运算符

    JavaScript之常见运算符 1.赋值运算符 以var x=12,y=5来演示示例 运算符 例子 等同于 运算结果 = x=y   x=5 += x+=y x=x+y x=17 -= x-=y x ...