if condition and question
Maxim Dounin
mdounin at mdounin.ru
Thu Sep 10 22:08:01 MSD 2009
Hello!
On Thu, Sep 10, 2009 at 06:42:03PM +0200, Tomasz Pajor wrote:
> Hello,
>
> When a request comes to the server i want to check if the $remote_addr
> is in my list of addresses, if it is then serve the normal content if
> not, then serve a static page.
> I tried something like this but it doesn't seem to work.
>
> server {
> listen 80;
> server_name .app-domain.com;
> error_log /var/log/nginx/app-error.log;
>
> root /disk0/vhosts/app/public;
> charset utf-8;
>
> fastcgi_index index.php;
>
> location / {
> if ($remote_addr !~ (x.x.x.x|z.z.z.z|y.y.y.y)) {
> root /disk0/vhosts/blank;
> break;
> }
>
> try_files $uri $uri/ @fallback;
> fastcgi_pass apps;
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
> include fastcgi_params;
This won't work as fastcgi_pass will be inherited into if(). You
should use internal redirect instead. Also it's a good idea to
use geo module for ip checks. So something like this should
work:
geo $static {
default 0;
x.x.x.x/32 1;
y.y.y.y/32 1;
z.z.z.z/32 1;
}
server {
...
location / {
if ($static) {
rewrite ^ /static/ last;
}
...
}
location /static/ {
internal;
alias /disk0/vhosts/blank/;
}
...
}
Maxim Dounin
> }
>
> location @fallback {
> fastcgi_pass apps;
> fastcgi_param SCRIPT_FILENAME $document_root/index.php;
> include fastcgi_params;
> }
> }
>
More information about the nginx
mailing list