Wonderful one-liners in configuration

Igor Sysoev is at rambler-co.ru
Thu Apr 30 09:31:33 MSD 2009


On Thu, Apr 30, 2009 at 01:19:23AM -0400, sbwoodside wrote:

> I just love nginx, just adopted it today, and wanted to show my appreciation by sharing something I really like but haven't seen in any of the configuration examples: collapsing multiple-line config blocks into one line. For example here is my config for one of my sites. Look how nice and short it is :-)
> 
> 
> upstream mongrel-hub { server 127.0.0.1:11000; server 127.0.0.1:11001; server 127.0.0.1:11002; }

I prefer to not use one-liner in blocks as above since it does not allow to
comment out some servers.

> server {
>   listen 80;
>   server_name xxx;
>   root /var/www/deployed-hub/current/public;
>   error_page 500 502 503 504 /50x.html;  location = /50x.html { root /var/www/nginx-default; }
>   if (-f $document_root/system/maintenance.html) { rewrite  ^(.*)$  /system/maintenance.html last; break; }
>
>   location / {
>     proxy_set_header X-Real-IP $remote_addr;
>     proxy_set_header -Forwarded-For $proxy_add_x_forwarded_for;
>     proxy_set_header Host $http_host;
>     proxy_redirect false;

It should be proxy_redirect "off".

>     if (-f $request_filename) { rewrite (.*) $1 break; }
>     if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; }
>     if (-f $request_filename.html) { rewrite (.*) $1.html break; }
>     if (!-f $request_filename) {
>       proxy_pass http://mongrel-hub;
>       break;
>     }

There is more nice one-liner for the above "if/rewrite" ugly stuff:

      location / {
          try_files  $uri  $uri/index.html  $uri.html  @mongrel;
      }

      location @mongrel {
           proxy_pass http://mongrel-hub;
           proxy_set_header ...
      }

>   }
> }
> 
> 
> I've compressed blocks that I'll never need to think about again (and stole from other rails sites anyway) and keep things nice and clear. Thanks!

This is called write only configuration. Everyone prefers to think that
he will never need to think about something again. It's almost always wrong.


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list