Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A script to enable or disable a site in nginx.
tree: 9bbefb76c3

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

nginx_ensite and nginx_dissite for quick virtual host enabling and disabling


This is a shell (Bash) script that replicates for nginx the Debian a2ensite and a2dissite for enabling and disabling sites as virtual hosts in Apache 2.2.

The original a2ensite and a2dissite is written in Perl. a2dissite is a symbolic link to a2ensite. Here I followed the same approach, i.e., nginx_dissite is a symbolic link to nginx_ensite.


Just drop the script and the symbolic link in /usr/sbin or other location appropriate for your system. Meaning: cp nginx_* /usr/sbin. That’s it you’re done.

Note that the script assumes a specific file system topology for your nginx configuration. Here’s the rundown:

  1. All virtual hosts configuration files should be under /etc/nginx/sites-available. For example the virtual host foobar is configured through a file in /etc/sites/available.
  2. After running the script with foobar as argument: nginx_ensite foobar. A symbolic link /etc/nginx/sites-enabled/foobar -> /etc/nginx/sites-available/foobar is created.
  3. The script invokes nginx -t to test if the configuration is correct. If the test fails no symbolic link is created and an error is signaled.
  4. If everything is correct now just reload nginx, in Debian based systems that means invoking /etc/init.d/nginx reload.
  5. Now point the browser to the newly configured host and everything should work properly assuming your configuration is sensible.
  6. To disable the site just run nginx_dissite foobar. Reload nginx to update the running environment.


The script is written in Bash and uses what I believe to be some Bash specific idioms. I never tested it in other shells. You’re welcomed to try it in any other shell. Please do tell me how it went.

It requires also awk. The original AWK (usually called BWK awk) from Bell Labs will do if you don’t have gawk (Gnu awk). IN OS X and *BSD the former is the default awk. The script should work in *BSD, OS X and GNU/Linux.

Security & Trust

The script is signed with my GPG key. Just do gpg --keyserver --recv-keys 4D722217. Verify by issuing gpg --verify nginx_ensite.sig.

Something went wrong with that request. Please try again.