nginx访问控制

情景: 公司最近将一个服务通过nginx反向代理的方式映射到了外网上,又想要限制允许某些固定ip访问

实现:
1.如果想要对所有网站生效,那么需要在Nginx的配置文件夹里创建一个名为“license.conf”的配置文件:

allow 10.10.10.10;#ip
allow 20.20.20.20;
allow 10.10.10.0/24;#ip段
deny all;

2.但是公司的Nginx代理了很多网站,而且只想让针对当前网站单独设置限制某些固定ip访问,这种情况只能修改对应的conf文件:

server {
	listen 80;
	server_name xxxx.xxxx.com.cn;
	location / {
		proxy_pass http://192.168.1.1;
		allow 10.10.10.10; #客户ip1
		allow 20.20.20.20; #客户ip2
		deny all;
		#proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
		proxy_set_header    X-Real-IP $remote_addr;
		proxy_set_header    X-Forwarded-For $remote_addr;
		proxy_set_header    Host $http_host;
		proxy_set_header   X-Forwarded-Proto $scheme;
		client_max_body_size 100m;
		
		proxy_connect_timeout      90;
		proxy_send_timeout         90;
		proxy_read_timeout         90;
		proxy_buffering            off;
		proxy_request_buffering    off;
	}
}

3.后来发现,流到nginx的数据流是经过负载均衡、防火墙等其他网络设备,访问的ip并不是客户的ip,而2中的方法只能对流到nginx的数据来源做IP控制。所以选择通过http_x_forwarded_for实现访问控制:

map $http_x_forwarded_for $accessip {
	default false;
	#10.10.10.10(IP匹配)
	10.10.10.10 true;
	20.20.20.20 true;
	#10.10.50.0/24(网段匹配)
	10.10.10.0/24 true;
}


server {
	listen 80;
	server_name xxxx.xxxx.com.cn;
	if ( $accessip = 'false') {return 405;}
	location / {
		proxy_pass http://192.168.1.1;
		#proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
		proxy_set_header    X-Real-IP $remote_addr;
		proxy_set_header    X-Forwarded-For $remote_addr;
		proxy_set_header    Host $http_host;
		proxy_set_header   X-Forwarded-Proto $scheme;
		client_max_body_size 100m;
		
		proxy_connect_timeout      90;
		proxy_send_timeout         90;
		proxy_read_timeout         90;
		proxy_buffering            off;
		proxy_request_buffering    off;
	}

}

这样只有允许的ip才能被转发,否则会被返回错误值405(这个值可以自己定义)

相关推荐

  1. Nginx访问控制

    2024-04-12 20:56:03       35 阅读
  2. nginx访问控制

    2024-04-12 20:56:03       16 阅读
  3. nginx访问控制

    2024-04-12 20:56:03       12 阅读
  4. Nginx访问控制模块详解

    2024-04-12 20:56:03       29 阅读
  5. 用Lua控制Nginx静态文件的url访问权限

    2024-04-12 20:56:03       17 阅读
  6. ACL访问控制列表

    2024-04-12 20:56:03       38 阅读
  7. odoo字段访问控制

    2024-04-12 20:56:03       18 阅读
  8. ACL访问控制列表

    2024-04-12 20:56:03       13 阅读

最近更新

  1. splice方法的使用#Vue3

    2024-04-12 20:56:03       0 阅读
  2. 使用Dockerfile和ENTRYPOINT运行Python 3脚本

    2024-04-12 20:56:03       0 阅读
  3. 黑龙江等保测评对中小企业成本效益分析

    2024-04-12 20:56:03       0 阅读
  4. 6、Redis系统-数据结构-01-String

    2024-04-12 20:56:03       1 阅读
  5. STM32学习和实践笔记(39):I2C EEPROM实验

    2024-04-12 20:56:03       1 阅读
  6. Python面试题:请解释什么是反射(reflection)?

    2024-04-12 20:56:03       1 阅读
  7. Rudolf and k Bridges——Codeforces Round 933 (Div. 3) E

    2024-04-12 20:56:03       1 阅读

热门阅读

  1. docker版postgresql数据库主从配置

    2024-04-12 20:56:03       17 阅读
  2. LeetCode hoot100-22

    2024-04-12 20:56:03       20 阅读
  3. 汽车的基本结构有哪些?

    2024-04-12 20:56:03       56 阅读
  4. Centos7 部署Zabbix6.0 LTS

    2024-04-12 20:56:03       19 阅读
  5. 4.8作业

    4.8作业

    2024-04-12 20:56:03      23 阅读
  6. 前端小白学习Vue框架(二)

    2024-04-12 20:56:03       21 阅读
  7. qt 系列教程(3) 对话框

    2024-04-12 20:56:03       20 阅读
  8. AcWing 790. 数的三次方根

    2024-04-12 20:56:03       22 阅读
  9. 登录加载动画

    2024-04-12 20:56:03       45 阅读
  10. Sed 命令深度解析:Linux 文本处理的利刃

    2024-04-12 20:56:03       21 阅读
  11. WebKit结构简介

    2024-04-12 20:56:03       23 阅读
  12. [深度学习] 无人车避开赛道边的障碍物

    2024-04-12 20:56:03       23 阅读