проблема с limit_except

Maxim Dounin mdounin at mdounin.ru
Tue Nov 3 19:41:18 MSK 2009


Hello!

On Tue, Nov 03, 2009 at 07:19:30PM +0300, Artem Danilenko wrote:

> Приветствую! 
> 
> > > 
> > > Понадобилось нескольким сетям закрыть POST!
> > > 
> > >     location / {
> > >  [skip]
> > > limit_except  GET {
> > >     deny    xx.xx.xx.0/20;
> > >     deny    xy.xy.xy.0/24;
> > >     allow   all;
> > 
> > +          proxy_pass  http://127.0.0.1/;
> > 
> > > }        proxy_pass  http://127.0.0.1/;
> > >  [skip]
> > >       }
> > > 
> > >     location @apache {
> > >         proxy_pass  http://127.0.0.1/;
> > >  [skip]
> > >       }
> > > 
> > > Когда клиент из deny сетей пытается сделать POST, он получает 403 и это работает правильно, но тогда все остальные при POST, получают 404. В error.log видно, что запросы не идут на прокси, а идут в "root html" который в этом локейшене не определен, т.е. берется тот, что по умолчанию.
> > 
> > Директива proxy_pass не наследуется, внутри блока limit_except её надо явно 
> > указывать.
> 
> Добавил:
> nginx -t
> [emerg]: "proxy_pass" may not have URI part in location given by regular expression, or inside named location, or inside the "if" statement, or inside the "limit_except" block in /etc/nginx/nginx.conf:169
> configuration file /etc/nginx/nginx.conf test failed

Очевидное решение - спилить URI part.

-          proxy_pass  http://127.0.0.1/;
+          proxy_pass  http://127.0.0.1;

Maxim Dounin





More information about the nginx-ru mailing list