我有一个关于基于用户代理+ IP的NGINX的允许/拒绝规则的问题。
我目前在我的nginx.conf中有以下内容,允许基于某个“iOS”用户代理值的所有Internet连接。
server { proxy_set_header Proxy-Connection ""; listen *:8443; server_name myserver.com; if ($http_user_agent !~* (ELB|ios)) { return 403; } location / { proxy_http_version 1.1; proxy_pass https://myserver; proxy_set_header Connection "upgrade"; } }
我想允许访问以下组合:
要么
提前致谢。
“iOS”的任何“IP”+“UserAgent”
所以你所要做的就是拒绝默认允许任何iOS的UserAgent。
IP子网192.168.2.0/24 +“用户代理”值“chrome”
如果在Nginx中创build一个化合物,你在这种情况下要做的是什么。
在GitHub上的Jrom创build了一个脚本来完成这个任务。
https://gist.github.com/jrom/1760790
如果我们使用Jrom创build一个脚本作为例子,使用一些实现kolbyjack发布的过程 ,我们可以做你正在寻找的东西。
set $test DENIED; geo $good_user { default 0; 192.168.2.0/24 1; } if ($http_user_agent ~* (ELB|ios)) { set $test ALLOWED; } if ($good_user) { set $test DE; } if ($http_user_agent ~* (chrome)) { set $test "${test}V"; } if ($test = ALLOWED) { proxy_pass https://myserver; break; } if ($test = DEV) { proxy_pass https://myserver; break; } if ($test = DE) { return 403; } if ($test = V) { return 403; } if ($test = DENIED) { return 403; }