做网站时经常会用到remote_addr和x_forwarded_for这两个头信息来获取客户端的IP,然而当有反向代理或者CDN的情况下,这两个值就不够准确了,需要调整一些配置.Nginx作为web服务器 时需要根据源IP地址(remote_addr)进行某些限制,但是假如前端是负载均衡的话,Nginx获得的地址永远是负载均衡的内网地址,虽然可以通过设置x_forwarded_for获取到真实的源IP地址但 是无法针对这个地址进行一些权限设置,及Nginx获取到的remote_addr是没有多…
最近做博友推荐,发现个小问题,用$_SERVER['REMOTE_ADDR'];得到的都是服务器的地址192.168.96.52,搜索了一下,发现问题,改为$_SERVER['HTTP_X_REAL_IP'];: nginx 代理模式下,获取客户端真实IP 在nginx中设置: proxy_set_header        Host            $host;proxy_set_header        X-Real-IP       $remote_addr;proxy_set_h…
Nginx禁止ip访问可以防止指定IP访问我们的网站,本例子可以实现是防止单IP访问或IP网段访问了,非常的有用我们一起来看看吧. 常用的linux做法 iptables参考规则  代码如下 复制代码 iptables -I INPUT -p tcp –dport 80 -m –mac-soruce$MAC -j DROP 基于mac地址的iptables -I INPUT -p tcp –dport 80 -s $IP -j DROP 基于ip地址的 方法一, 首先建立下面的配置文件放在ngi…
我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回50…
Nginx禁止IP访问,只允许域名访问 我们在使用nginx的过程中会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了. 1.直接返回403错误 server { listen default_server; server_name _; return 403; } 或者返回500错误 server { listen default_server; server_name _; return 500; } 2.通过301跳转到主页 如果直接显示500或者403页面,导致用户体验…
nginx禁止IP访问站点的设置方法 http://www.512873.com/archives/471.html http://www.512873.com/archives/312.html conf目录下面,新建blocksip.conf 在blocksip.conf里面写入deny 1.1.1.1; 这句就是禁止这个IP的意思(整个段是:deny 1.1.1.0/24;) nginx.conf里面加入:include blocksip.conf; 重启一下nginx即可. Nginx服…
使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy_set_header server { listen ; server_name chat.luckybing.top; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy…
使用nginx做反向代理,Tomcat服务器和Jetty服务器如何获取客户端真实IP地址呢?首先nginx需要配置proxy_set_header,这样JSP使用request.getHeader("X-Forwarded-For")或request.getHeader("X-Real-IP")就可以获取真实IP了.如果不想该代码怎么办?还可以通过改配置文件实现! Nginx 添加以下配置: proxy_set_header Host $http_host; pro…
nginx配置location总结及rewrite规则写法 Nginx Location配置总结 Nginx 禁止某个IP访问 server { listen 443; root /webroot/; server_name serverName; access_log /data/log/nginx/access_web_domain.log main buffer=32k flush=5s; charset utf-8; client_max_body_size 200m; ssl on;…
使用nginx的nginx_upstream_check模块来检测后端服务器的转态时,设置只允许某段IP访问,发现不生效,不在此网段的IP也可以访问. 原因为在允许IP访问最后一定要加deny all;表示除了上面allow的其他都禁止 配置如下: location /status { check_status; access_log off; allow 10.2.72.26; deny all; } 最后要加deny all…
限制某个IP同一时间段的访问次数 如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包, 造成对方服务器资源耗尽,一直到宕机崩溃. cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqModul和HttpLimitZo…
这两天百度云给我发了一些安全报警邮件,其中一条是有些陌生ip频繁尝试登录我的后台账户,也就是www.runstone.top/admin.给出的建议是限制这些ip访问/admin/这个url,于是经过一番折腾做好了.现在来分享一下: 进入nginx的配置文件:vim /xxx/xxx.conf,然后这样写入: location /admin { include /etc/nginx/uwsgi_params; uwsgi_pass 0:9000; allow 175.188.0.0/16; de…
今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案: Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效 最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. 这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,…
一.限制所有单个ip的访问频率 1.http中的配置 http { #$limit_conn_zone:限制并发连接数 limit_conn_zone $binary_remote_addr zone=one1:10m; #limit_req_zone:请求频率 #$binary_remote_addr:以客户端IP进行限制 #zone=one:10m:创建IP存储区大小为10M,用来存储访问频率 #rate=10r/s:表示客户端的访问评率为每秒10次 limit_req_zone $bina…
1.大家有过这方面的困扰,就是自己的网站给其他人恶意域名解析到自己的服务器ip上. 特别不爽,那大家可以用用空主机头的方法. 先给大家看下我的nginx.conf配置 http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"…
项目新需求,因为是小范围使用的网站,所以不打算配域名,直接通过IP访问当前项目. 环境: LNMP 一键集成环境 当前IP指向的目录 :/home/wwwroot/default/ 但是我的项目.需要它指向到当前目录的Code目录里面的public 所以:. 1.进入nignx目录. 2.  在这里添加上需要访问的目录 然后保存退出 3. # vim nginx.conf 这三块.是要重写的.如果不加最后一个箭头指向的部位.PHP不解析.直接下载. location /{} :tp5的路由解析方…
需求:网站只允许指定IP访问,其他访问一律拒绝server { listen 80; server_name a.com; index index.html index.htm index.php; root /var/wwwroot/aaa/; allow 23.100.1.222; allow 23.107.17.58; allow 23.107.17.59; allow 23.107.17.60; allow 23.107.17.61; allow 23.107.17.62; deny a…
#!/usr/bin/env python #coding=utf-8 import requests from urllib2 import urlopen # import lxml.html from bs4 import BeautifulSoup import subprocess import sys,os reload(sys) sys.setdefaultencoding('utf-8') # log file logfile = "./access.log" #res…
一.服务器全局限IP #vi nginx.conf allow 10.57.22.172;  #允许的IP    deny all;   二.站点限IP #vi vhosts.conf 站点全局限IP:location / {    index  index.html index.htm index.php;    allow 10.57.22.172;    deny all; location ~ \.php$ {        if ( $fastcgi_script_name ~ \..…
首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: 加入以下代码: #屏蔽soso蜘蛛IP deny 113.108.12.154; #此为搜搜蜘蛛IP deny ; #此为屏蔽搜搜蜘蛛124. ~ .255整个网段IP deny ; #此为屏蔽搜搜蜘蛛124. ~ .255整个网段IP 屏蔽整个网段的IP时有可能会造成错杀,不过几率很低. 保存一下. 在nginx的配置文件nginx.conf中加入:include blocksip.conf; 重启一下…
server { listen 80 default_server; server_name _; access_log /logs/ip-access.log main; error_log /logs/ip-error.log; return 301 http://www.baidu.com; }…
server { listen 80 default; server_name _; if ($host ~ "\d+\.\d+\.\d+\.\d") { return 404; } }…
Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的域名.协议.端口都是Nginx访问Web应用时的域名.协议.端口,而非客户端浏览器地址栏上的真实域名.协议.端口. Nginx的反向代理实际上是客户端和真实的应用服务器之间的一个桥梁,客户端(一般是浏览器)访问Nginx服务器,Nginx再去访问Web应用服务器.对于Web应用来说,这次HTTP请求…
写在前面 Nginx最为最受欢迎的反向代理和负载均衡服务器,被广泛的应用于互联网项目中.这不仅仅是因为Nginx本身比较轻量,更多的是得益于Nginx的高性能特性,以及支持插件化开发,为此,很多开发者或者公司基于Nginx开发出了众多的高性能插件.使用者可以根据自身的需求来为Nginx指定某款插件以增强Nginx在某种特定场景下的功能或者提升Nginx在某种特定场景下的性能. Nginx获取客户端信息 注意:本文中的客户端信息指的是:客户端真实IP.域名.协议.端口. Nginx反向代理后,Se…
1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String getIpAddr(HttpServletRequest request){ String ipAddress = request.getHeader("X-Real-IP");//先从nginx自定义配置获取 if (ipAddress == null || ipAddress.length(…
在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 原因:由于在客户端和服务之间增加了中间代理,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端. 现在图示代理上网和IP的关系: 第一种情况:不通过代理上网,服务器端拿到真实IP 第二种情况:通过代理服务器如:Nginx,Squid等一层代理或多层…
在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示的是局域网内的IP地址,而不是用户客户端真正的IP地址: 解决此问题办法如下:(此方法是在官方thinkphp讨论区大牛分享的http://www.thinkphp.cn/code/433.html) 修改位置:根项目\ThinkPHP\Common\funcitons.php->get_clien…
在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 原因:由于在客户端和服务之间增加了中间代理,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端.. 解决办法:在转发请求的HTTP头信息中,增加X-FORWARDED-FOR信息.用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址.当我们访问…
首先我们来了解相关变量的含义: $_SERVER['REMOTE_ADDR']:浏览当前页面的用户计算机的ip地址 $_SERVER['HTTP_CLIENT_IP']:客户端的ip $_SERVER['HTTP_X_FORWARDED_FOR']:浏览当前页面的用户计算机的网关 $_SERVER['HTTP_X_REAL_IP']:nginx 代理模式下,获取客户端真实IP 下面我们通过简单的代码示例来介绍PHP获取客户端IP地址的方法. /** * 获取客户端IP地址 */ function…
转 http://developer.51cto.com/art/200912/166495.htm function getip() { $unknown = 'unknown'; if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown) ) { $ip =…