track ip addresses, lookup mac addresses, etc

Configuring Nginx web server

Published on July 01, 2009

Configuring Nginx

Installing Nginx

This tutorial is specific to Ubuntu Linux, but can be adapted for other versions of *nix and Linux distros. Here, we assume that

  • Nginx is installed in /etc/nginx/
  • The configuration file nginx.conf is located at /etc/nginx/
  • Nginx can be started by running this command:

    sudo /etc/init.d/nginx start

Getting started

A typical nginx.conf file looks like this (at least the one on my development machine)

user www-data;
worker_processes  2;

events {
    worker_connections  1024;

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    # turn directory listing off 
    autoindex off;

    # turn on gzip compression
    gzip  on;

    # load all domains
    include /etc/nginx/sites-enabled/*;

Brief explanation:

user www-data means Nginx is going to run as user www-data. This is useful if you're making the transition from Apache, where the user is www-data. You won't have to change ownership of any existing files or directories.

You can have a maximum of 2048 clients connected. This number is got by multiplying worker_processes with worker_connections. autoindex is turned off for safety, to prevent visitors from snooping.

gzip is turned on so that Nginx serves compressed web content - save on bandwidth.

The other lines are self-explanatory.

The domain configuration files are located in /etc/nginx/sites-enabled/

Configuring the domain

Suppose we want to use Nginx to host the domain this is a basic configuration.

  • the files are hosted at /home/username/public_html/imacstercom
  • the logs will be stored in /etc/nginx/logs/imacstercom
  • 40x.html, 50x.html and maintenance.html are static files for error display

Contents of /etc/nginx/sites-enabled/default

server {
    listen       80;

    # log files
    access_log /etc/nginx/logs/imacstercom/access.log;
    error_log /etc/nginx/logs/imacstercom/error.log warn;

    # directory
    root   /home/username/public_html/imacstercom;
    index  index.html index.php;

    location / {

    error_page   401 403 404      /40x.html;
    error_page   500 502 504      /50x.html;
    error_page   503              @503;
    location @503 {
        rewrite ^(.*)$ /maintenance.html break;

That's the basic configuration for Nginx. To include support for PHP scripts, there are 2 ways.

{ % include 'ajrwd' %}

Disclaimer: Our website is supported by our users. We sometimes earn affiliate links when you click through the affiliate links on our website.

Published on July 01, 2009

← Previous Post Installing Nginx web server

Configuring Nginx to include PHP FastCGI support Next Post →

{ % include 'footer' %}