当前位置:首页 > nginx > 正文

nginx 域名访问ip

  • nginx
  • 2024-04-15 12:56:01
  • 2880
本文目录一览

1、nginx配置的域名虚拟主机怎么ip也能访问
分配域名时;如果域名可以解析为多个IP,则轮询访问通常
分配一个IP,并在该IP上配置访问
如果仅适用域名。 一个IP;两种效果是等效的;但配置域名需要在ip不变的情况下额外进行域名解析步骤
;配置ip就够了。 来配置域名。


2、nginx怎么配置IP和域名都能访问
一台nginx服务器只能允许一个虚拟主机IP访问
只要在server_name后面添加一个default,就可以使用当前服务器来解析其他nginx没有定义的域名(例如,其他服务器没有定义为server_name的IP地址,IP访问将被定向到默认主机)


3、如何禁掉nginx恶意访问ip
我不知道为什么我写的网站总是有很多恶意IP地址。 这根本不是正常的用户访问。 我还想知道它是否可能是运营商的代理出口IP地址,但确实如此。 好像不是,所以暂时没在意。 先说封禁
然后怎么封禁。 规则比较简单,就是超过阈值后,使用。 下面的命令是iptables
iptables-IINPUT-s-jDROP
serviceiptablessave
serviceiptablesrestart
如何计算nginx访问IP地址?目前,读取nginxaccess.log文件然后解析它是相对容易的。 如果超过阈值,我们将执行上述命令并封锁该IP。
问题之一是我们需要持续监控access.log文件而不是读取一次。 当然,我们可以在每天结束时封锁IP,但仅此而已。 不能让扫描仪嚣张,所以
我觉得还是赶紧屏蔽比较好。
我写了一个类似Tail的函数来读取文件。 打开时,它首先检测文件的大小,然后开始循环处理。 处理有点不同。 我直接使用tail在我的程序的sys.stdin中找到这个文件的流,这样我就可以轻松读取所有流
tail/var/log/nginx。 /access.log|python.py
但是nginxaccess.log文件每天会更新一次。 怎么做?推荐方法见nginx官网
mvaccess.logaccess。 .log.0
kill-USR1`catmaster.nginx.pid`
sleep1
gzipaccess.log.0#dosomethingwithaccess.log.0
我的vps是由logrotatedCan处理的。 可以在/etc/logrotate.d/nginx
/var/log/nginx/*.log{
daily
missingok
rotate52
中找到压缩
延迟压缩
notifempty
create640nginxadm
sharedscripts
postrotate
[-f/var/run/nginx.pid]&&kill-USR1`cat/var/run/nginx.pid`
endscript

这里表达的创建意味着将重新创建该文件。 这样的老文件其实并没有新的数据,但是由于使用了tail,并且没有eof,所以直接读取的时候会发现file.readline()函数挂了,导致程序挂了。 freeze使程序无法自动退出。 然后我决定使用select来处理它,并添加了10秒的超时。 从目前的流量来看,基本上每秒都会有很多请求发。 如果10秒内没有数据,则说明有问题。
whilesys.stdininselect.select([sys.stdin],[],[],10)[0]:
那么如果没有选择的话,基本上就意味着旋转文件nginxlog已经被移除了,所以当出现这种情况时,我干脆跳出程序并退出。 如果我关闭程序该怎么办?本来想在程序中重新启动程序,但是觉得这样可能不切实际,所以就用了crontab来处理,防止这种情况发生。 在几次运行中,我使用集群来阻止程序重新启动
*/2****flock-xn/dev/shm/blocker.lock-c"sh/srv/www/beauty/。 daemon/nginx_ip_blocker.sh"
此处附有代码
#coding=utf-8
importsys
importre
importos
importurllib
importurllib2
importdatetime
importtime,os
importlogging
importjson
importselect
logging.basicConfig(level=logging.DEBUG,datefmt='%Y%m%d%H:%M:%S',format='[%(asctime)s]%(message)s')
"""
iptables-IINPUT-s-jDROP
serviceiptablessave
serviceiptablesrestart
该脚本主要用于解除对nginx的恶意ipban访问
"""
MAX_IP=7000
defget_date():
returntime.strftime("%Y%m%d")
defban_one_ip(ip):
os.system("iptables-IINPUT-s%s-jDROP;serviceiptablessave;serviceiptablesrestart"%ip)
deffind_ip_and_ban():
foripinip_map:
ifip_map.get(ip)>MAX_IP:
print"banip,count%s:%s"%(ip_map.get(ip),ip)
ip_map[ip]=0
ban_one_ip(ip)
today=否
ip_map={}
defprocess_log(lines):
globalip_map;
globaltoday;
now=get_date()
ifnow!=今天:
today=now
ip_map={}
forlineinlines:
ip=line.split("")[0]
count=ip_map.get(ip,0)
count+=1
ip_map[ip]=count;
find_ip_and_ban()
COUNT=50
defmain():
brk=False
whileTrue:
tmp=0;
lines=[]
brk=False
whilesys.stdininselect.select([sys.stdin],[],[],10)[0]:
line=sys.stdin.readline()
ifnotline:
brk=True
print'readtoeof'
break
lines.append(line)
tmp+=1
iftmp>COUNT:
break
else:
brk=True
print'readtimeout'
break
process_log(lines)
print"readlines:%s"%len(lines)
ifbrk:
break
ifbrk:
打印“突破”
if__name__=="__main__":
main()


4、nginx转发不同的域名给不同IP

如果你想给不同的服务器分配不同的域名,最好的办法就是在服务器域中进行配置。 您可以使用server_name指令来区分请求属于哪个域。 配置方法如下:

#...
#...
服务器{
server_nameimg10.ff.comimg10.*;
#其他配置项。
#...
#将所有请求转发到此服务器img10.ff.com是上游。
位置/{
Proxy_passhttp://img10.ff.com;
中断;
}
}
server{
Listening8000;
server_nameimg11.ff.comimg11.*;
#其他配置项。
#...
#转发所有请求从服务器到img11.ff.com上游。
Location/{
Proxy_passhttp://img11.ff.com;
break;
}
}
#其他配置选项。


这里的所有访问都是对反向代理系统的。 客户端获取到的IP也是反向代理IP。 代理根据server_name将请求转发到后端系统进行处理。 因此,请记住,ping命令返回的结果都是反向代理IP地址。