首页 » Linux » haproxy和nginx后台只允许固定ip登录说明

haproxy和nginx后台只允许固定ip登录说明

 

haproxy配置

haproxy作为负载均衡可以根据域名和路径来限制访问,

第一、根据域名,配置如下:

 acl good_guy src  10.10.10.10 100.100.100.100
acl is_domain hdr_beg(host) -i  www.xxx.com
http-request  deny   if   !good_guy    is_domain
use_backend  web1 if is_domain
backend web1
mode http
balance     roundrobin
server      admin1  10.104.10.188:8200 check
第二、根据路径
acl test_uri  path_beg -i  /register-register
acl test_uri1 path_beg -i  /sms-regPhoneCode.html
http-request deny  if test_uri is_m_e_cn
http-request deny  if test_uri1 is_m_e_cn
nginx配置
nginx可以根据location来设置,但是需要注意的是,如果你的路径后面是php,而且是一级路径,那么你要加入php解析,不然就变成了下载了。
如下是wordpress的后台登录限制。
  location  = /wp-login.php  {
      fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                root html/blog;
                fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
                fastcgi_param  PATH_INFO $fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
                include        ../conf/fastcgi.conf;
allow 192.168.0.208;
deny all;
}
由于wp-login.php是php程序,你访问的时候直接匹配了,所以不会匹配下面的php解析,如果index index.php这样指定了,也是不会解析的。上面的=可以换成~,~*,^~都可以,但是前提是php的 解析程序要放在此location的下面,因为location 的配置也有优先级。
顺序如下:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。^~ ”符号(^ 表示“非”,~ 表示“正则”,字符意思是:不要继续匹配正则)

~ 开头表示区分大小写的正则匹配

~*  开头表示不区分大小写的正则匹配

!~!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

/ 通用匹配,任何请求都会匹配到。

其中“~ ”和“~* ”前缀表示正则location ,“~ ”区分大小写,“~* ”不区分大小写;其他前缀(包括:“=”,“^~ ”和“@ ”)和无任何前缀的都属于普通location

原文链接:haproxy和nginx后台只允许固定ip登录说明,转载请注明来源!

0