0%

Nginx根据指定IP转发链接

需求
因项目变更,外网官网跳转到维护界面,指定ip地址能够正常访问

第一种情形:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#可以作为nginx的停服更新使用,仅允许172.16.2.80访问,其他IP都rewrite到停服页面

set $flag 0;

if ( $remote_addr ~* ^172\.16\.2\.80 ) {
set $flag "${flag}1";
}

if ($flag != "01") {
return 301 https://172.16.2.20/weihu.html;
}


# 如前段非nginx,可使用http_x_forwarded_for

第二种情形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#访问某个php应用的时候我只想让内部的某个IP访问,其他的IP都转到另一个PHP上
访问test.php,且IP不等172.16.2.80的跳转到weihu.php:
set $test '';
if ( $request_uri ~* /img/test.php ) {
set $test P;
}


if ( $http_x_forwarded_for !~* ^172\.16\.2\.80.* ) {
set $test "${test}C";
}

#当条件符合 访问test.php并且 ip不是172.16.2.80的转发到weihu.php
if ( $test = PC ) {
rewrite ^(.*)$ /img/weihu.php permanent;
}