nginx禁止ip登录,只允许域名访问

  公司要求,线上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 80 default; #配置此段表示用IP或其他域名访问时直接跳转到www.baidu.com,也可直接返回403
       server_name _;
       #rewrite ^ http://www.baidu.com$request_uri?;
       return 403;
   }
    server {
        listen       80;
        server_name  www.kalaok.com;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2、solr只允许域名方式访问

  由于考虑线上solr数据的安全和重要性,禁止运维和开发人员随意登录进行相关数据增删改操作,我们需要针对solr服务器进行安全访问控制。

  

  配置iptables如下:

[[email protected] conf]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Thu Jun 11 10:58:09 2015
*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 11 10:58:09 2015

  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   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

原文地址:https://www.cnblogs.com/qianjingchen/p/10342823.html

时间: 2024-10-01 04:19:56

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

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

修改Nginx配置文件 1.打开配置文件 一般Ngnix的配置文件放在/usr/local/nginx/conf/目录下,使用如下指令打开配置文件: vim /usr/local/nginx/conf/nginx.conf 2.修改配置文件 在server中添加如下代码: if ($host ~ "\d+\.\d+\.\d+\.\d") { return 404; } ~后面跟着的是正则表达式,匹配的是IP,如果匹配到了IP,则返回404,禁止其访问. 3.重启Nginx服务 使用如下

nginx限制ip,只允许域名访问

一般需要配置两个server ,listen需要被监听的端口. 第一个如下图,这样,当访问ip的时候就会返回500错误了: 第二个则配置你禁止的ip的域名,如下图 ,这里面配置你的location.upstream等一些其他配置 然后是两个一起的图片 原文地址:https://www.cnblogs.com/yzx2018/p/8883958.html

nginx 禁止ip访问只允许域名访问

nginx 禁止ip访问只允许域名访问 在nginx 配置文件中,再添加一个server段 server{listen 80 default;return 500;}

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

Nginx禁止IP访问,只允许域名访问 我们在使用nginx的过程中会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了. 1.直接返回403错误 server { listen 80 default_server; server_name _; return 403; } 或者返回500错误 server { listen 80 default_server; server_name _; return 500; } 2.通过301跳转到主页 如果直接显示500或者403页面,

Nginx 禁止IP访问 只允许域名访问

今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案 我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行:listen 80 default; 后面的default

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

设置配置文件disableip.conf: server {     listen 80;     server_name _;     return500; } 这是最终使用的配置文件,也是网上找到的常见的配置之一,最初该conf文件在sites-available文件夹下,尝试使用各种参数均无法正常工作,最终尝试将disableip.conf文件放入conf.d文件夹下,这是因为在nginx.conf文件中: include /etc/nginx/conf.d/*.conf; include

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

最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的是 OneinStack 的一键包,LANMP 环境,其实都差不太多,大同小异,只要理解了原理,下面的就好办了. 具体方法为:找到 apache 的配置文件,我的环境下路径为:/usr/local/apache/conf/httpd.conf,在文件最下面,Include conf/vhost/*.

Nginx,Apache只允许域名访问详细配置

Nginx,Apache只允许域名访问详细配置 一.nginx配置只允许域名访问 # 设置不允许Ip访问web(default_server) server { listen 80 default_server; server_name _; return 403; } # 设置www.meteor-yu.com域名访问web server { listen 80; server_name www.meteor-yu.com; location /ngx_status { stub_status

Nginx 禁止IP访问

我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回50