Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

I use Nginx as a server, and I currently use this for configuration of each my sites. Basically, I have multiple files like this located in /etc/nginx/conf.d/

#example.conf
server {
  listen             80;
  server_name        www.my-site.com  my-site.com;
  root               /var/www/html/my-site.com;

  location / {
         rewrite ^/category/(.*)$ /category.php?id=$1 last;
         rewrite ^/profile/(.*)$ /profile.php?id=$1 last;
         try_files $uri $uri/ /index.php?$query_string;
  }

  index  index.html index.htm index.php;

  error_page  404              /404.html;
        location = /var/www/html/nginx/error/404.html {
        root       /var/www/html/nginx/error/;
  }

  error_page   500 502 503 504  /50x.html;
       location = /var/www/html/nginx/error/50x.html {
       root        /var/www/html/nginx/error/error/;
  }

  location ~ \.php$ {
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       include        fastcgi_params;
  }
}

So, I have 6 sites with their own file like this, and I since I am about to do a complete re-install of my server, I would like to know how I can improve this configuration, both security and optimization wise.

share|improve this question

1 Answer 1

up vote 4 down vote accepted

The config looks great. However, a few points:

  1. If your server responds to both the www and non-www version of the site, just leave a wildcard. So server name should read:

    server_name *.my-site.com;

  2. You shouldn't put your configs in /etc/nginx/conf.d. Instead, place them in /etc/nginx/sites-available and then symlink them (ln -s) to /etc/nginx/sites-enabled. So, your /etc/nginx directory should look like:

    /etc/nginx/ nginx.conf sites-available/ my-site.conf my-other-site.conf yet-another-site.conf sites-enabled/ my-site.conf -> /etc/nginx/sites-available/my-site.conf my-other-site.conf -> /etc/nginx/sites-available/my-other-site.conf yet-another-site.conf -> /etc/nginx/sites-available/yet-another-site.conf

share|improve this answer
1  
Oh, thanks. Point #2 is a great advice. Hope to get more of the same, as for #1, that was intentional, since I need to for staging/developing ex. dev-stg.my-site.com which points to another folder, I had to be explicit. Thanks, add more if you don't mind :) –  robue-a7119895 Aug 28 '14 at 16:23
1  
Ah totally understood on point 1. As for point 2 - another great use of that method is that if you ever need to disable a site for whatever reason, you just delete the symlink and reload nginx. Your original config in sites-available will remain untouched if you ever need to reenable in the future (by creating the symlink again). –  jsanc623 Aug 28 '14 at 16:27

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.