Rewriting

wishmaster artemrts at ukr.net
Fri May 24 06:01:58 UTC 2013


Off course, you right. Thanks.

if ($remote_addr !~ '190\.212\.201\.[0-9]{0,3}') {
 rewrite ^/(.*)$ /unav/$1 break;
 }

location / {
 ....
 }
 ........

 But in log 

 2013/05/24 08:49:45 [error] 76017#0: *1910 open() "/usr/local/www/akbmaster/unav/unav/index.html" failed (2: No such file or directory), client: 190.212.201.198, server: akbmaster.server.com, request: "GET / HTTP/1.1", host: "akbmaster.server.com"

  I see twice rewriting.
  I have rewritten rule like this and this solved twice rewriting problem.
 rewrite ^/([^/]*)$ /unav/$1 break; 

 Can you explain me why in my situation nginx have rewritten request twice?

Cheers,

 
> Hello,
> 
> http://nginx.org/en/docs/http/request_processing.html
> 
> Because in this case you need to place your rule in server block if you 
> would like to be valid for all custom defined locations in your config
> For example:
> 
> server
> {
> listen 80;
> 
> if ($remote_addr ~ '192.168.1.25')
> {
> return 403;
> }
> 
> location /
> {
> ...
> }
> 
> location ~ \.php$
> {
> ...
> }
> 
> }
> 
> On 23.05.2013 23:11 ч., wishmaster wrote:
> > Hi,
> > I use opencart with nginx+php-fpm. Sometimes it is necessary to redirect all clients, except admin (190.212.201.0/24), to "Service unavailable" page which is simple index.html file with logo, background image and some text, located in /unav directory.
> > Below  some of nginx.conf
> >
> >
> > location / {
> >
> > if ($remote_addr !~ '190\.212\.201\.[0-9]{0,3}') {
> > rewrite ^/(.*)$ /unav/$1 break;
> > return 403;
> > }
> > try_files $uri $uri/ @opencart;
> > }
> >
> > location ^~ /unav {
> > }
> >
> > location @opencart {
> > rewrite ^/(.+)$ /index.php?_route_=$1 last;
> > }
> >
> > [...skipped...]
> >
> > location ~ \.php$ {
> >
> >           try_files      $uri =404;
> >           fastcgi_read_timeout 60s;
> >           fastcgi_send_timeout 60s;
> >           include           myphp-fpm.conf;
> >
> >                      }
> >
> > Problem  is in rewriting.
> > This rule
> >
> > rewrite ^/(.*)$ /unav/$1 break;
> >
> > rewrite ONLY http://mysite.com/ request but in case http://mysite.com/index.php rewrite is none and request processed by location ~ \.php$ rule. Why??
> >
> > Thanks!
> >
> >
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx



More information about the nginx mailing list