使用nginx重定向某些IP地址

时间:2013-12-24 23:00:50

标签: redirect nginx ip forward

如何使用nginx将少量IP地址转发到特定文件。我用这个:

server_name  mysite.com www.mysite.com;

if ($remote_addr = 123.123.123.123) {
        rewrite ^ http://www.mysite.com/somepage.php;
    }

如何添加[OR]其他地址或者我必须再次写入IF语句?

1 个答案:

答案 0 :(得分:2)

在一个IF表达式中不可能有很多OR语句。 如何描述这些前向规则有两种解决方案:

一个简单的解决方案

使用内置的允许 / 拒绝操作来重定向Nginx中的多个IP地址。

例如:

server_name  mysite.com www.mysite.com;

location / {
    error_page 403 http://www.mysite.com/somepage.php;  
    deny 123.123.123.123;
    deny 124.124.124.124;
    deny 125.125.125.125;
    deny 192.168.1.0/24;   # Deny a range of IP addresses

    # etc.

    allow all;  
    index index.html index.php;
    try_files $uri $uri/ @handler; 
}

location /somepage.php {
    allow all;
}

复杂的解决方案

需要安装一个名为ngx_lua的附加nginx模块。给定模块允许您使用全值编程语言Lua来编写nginx配置。