• Stars
    star
    552
  • Rank 77,859 (Top 2 %)
  • Language
    Shell
  • Created almost 14 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A script to enable or disable a site in nginx.

nginx_ensite and nginx_dissite for quick virtual host enabling and disabling

Description

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/2.4.

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.

The script allows for arbitrary paths for the nginx configuration directories. This is particularly useful not only to those on Mac, but also in a microservice approach where each service has it's own vhost configuration, for example.

Th deafult startup program is service. Feel free to pass another program. For example using nginx to send a SIGHUP to reload the configuration you just pass the option -s nginx to the script.

Installation

Automatic

git clone https://github.com/perusio/nginx_ensite.git
cd nginx_ensite
sudo make install

Manual

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 are by default under /etc/nginx/sites-available. For example the virtual host foobar is configured through a file in /etc/nginx/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. Note that if the /etc/nginx/sites-enabled directory doesn't exist the script creates it.

  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 service nginx reload (default startup program name is service).

  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.

Requirements

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.

Command Completion

There's a Bash script for automatic completion of sites to be enabled and disabled located in the bash_completion.d directory.

To make use of it you should:

  1. Source the script to Bash by issuing either source nginx-ensite or . nginx-ensite.

  2. Now when you invoke nginx_ensite the sites under /etc/nginx/sites-available will appear as hypothesis for completion. For nginx_dissite you get all the sites listed in /etc/nginx/sites-enabled as possible completions.

  3. To get the completion script to be sourced upon login please copy it to /etc/bash_completion.d/ or whatever location your shell environment uses to place all the completion scripts. /etc/bash_completion.d/ is the location in Debian (hence also in Ubuntu) of Bash completion scripts.

Manual pages

Two UNIX manual pages are included in the man directory. They should be copied to a proper directory in your system. Something along the lines of /usr/share/man/man8 or /usr/local/share/man/man8.

Here's an online version of the manpage.

Security & Trust

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

Acknowledgments

Thanks to the many people that have contributed to this script. You're the stuff Free Software is made of.

More Repositories

1

drupal-with-nginx

Running Drupal using nginx: an idiosyncratically crafted bleeding edge configuration.
Nginx
855
star
2

wordpress-nginx

Nginx configuration for running WordPress
384
star
3

nginx-cache-purge

A bash script for deleting items from Nginx cache
Shell
243
star
4

php-fpm-example-config

A php-fpm example configuration for both UNIX and TCP sockets.
196
star
5

nginx-hello-world-module

A hello world module for learning Nginx module development
C
195
star
6

linux-programming-by-example

C code from the book "Linux Programming by Example"
C
117
star
7

nginx-munin

A set of plugins for monitoring nginx with Munin
Perl
109
star
8

php-ini-cleanup

A script that cleans up the php.ini file with security in mind
Awk
106
star
9

nginx-auth-request-module

A Nginx module that enables authorizations on sub-requests
C
83
star
10

nginx-cache-inspector

Script that allows to inspect the Nginx cache
Shell
82
star
11

monit-miscellaneous

Monit configuration files for miscellaneous services
64
star
12

high-performance-web-kernel-parameters

A bunch of files with parameters for enabling a high performance web host
54
star
13

lua-resty-tarantool

Library for working with tarantool from nginx with the embedded Lua module or with Openresty
Lua
45
star
14

nginx-delay-module

Nginx module for inserting delays when serving requests.
C
38
star
15

redmine-nginx

A opinionated config for running Redmine with Nginx and thin.
35
star
16

chive-nginx

Running Chive with Nginx
27
star
17

nginx-spamhaus-drop

A shell script that creates a Nginx configuration for using Spamhaus DROP lists
Shell
26
star
18

php-fastcgi-debian-script

An init script to launch PHP the FastCGI daemon and spawn when needed in Debian
Shell
22
star
19

php-relaunch-web

Relaunch a PHP FPM and/or CGI process on timeout or termination
Shell
22
star
20

php-handlersocket

A PECL extension for using the HandlerSocket NoSQL MySQL plugin
PHP
18
star
21

add-etc-hosts

A script to add/remove hosts from the /etc/hosts file
Shell
15
star
22

squirrelmail-nginx

A secure and fast configuration for running squirrelmail with Nginx.
15
star
23

monit-graph

A PHP script for visualizing your servers Monit monitored services
PHP
13
star
24

i3-config-dynamic-tagging

An opinionated i3 config with dynamic tagging
R
12
star
25

nginx-http-concat

A Nginx module for concatenating files in a given context: CSS and JS files usually
12
star
26

drush-sql-extras

Various drush extra commands
PHP
9
star
27

drupal-nginx-fast-x-accel-redirect

A Drupal module that provides fast private file transfer with Nginx
PHP
8
star
28

memcached-better-init-script

A better init script for memcached. Specific config dir and stats integration if memcached library tools are installed.
Shell
8
star
29

nginx-mdounin-patches

A couple of patches from Nginx connaisseur Maxim Dounin
8
star
30

nginx-load-balancing-extras

Nginx load balancing extra algorithms: sharded, consistent hashing
6
star
31

xorg-synaptics-led-support

Patches for supporting the LED in synaptics touchpads
6
star
32

drush-cache-warmer

A drush command implementing a cache warmer for keeping a cache primed. Adequate for Nginx cache and Varnish.
Lua
6
star
33

apache-mod_aclr-nginx-frontend

Apache mod_aclr: easy setup of Nginx as a frontend to Apache
C
5
star
34

munin-php-cgi

Munin plugin for monitoring PHP FastCGI Memory usage
4
star
35

drupal-db

A set of shell scripts for working with databases in Drupal
Shell
4
star
36

lml2-html5

The LML2 Common Lisp Markup Language with HTML5 support
Common Lisp
4
star
37

nginx-reverse-proxying-beyond

Nginx Reverse Proxying and Beyond Code
4
star
38

thttpd-config

thttpd config for using as an upstream CGI processor with Nginx
4
star
39

kit

Guidelines for creating reusable features in Drupal
4
star
40

php-heartbeat

Simple script that functions as an hearbeat for PHP
PHP
4
star
41

nginx-cache-simple-crawler

A script for keeping a bunch of static files in Nginx cache
Shell
3
star
42

docker-tarantool

Dockerfile setup for running tarantool in a secure and scalable way
Lua
3
star
43

lua-uri

A URI manipulation library written in pure Lua
Lua
3
star
44

filefield-nginx-progress

A drupal module for RFC1867 POST upload progress bar
PHP
3
star
45

memcached-inspect-keys

A script in Lua to inspect a memcached instance
Lua
3
star
46

drupal-nginx-aggregation

A drupal module for aggregating CSS and JS files using Nginx HTTP concat
PHP
3
star
47

drush-aliases

A shell script that defines a bunch of aliases for drush fun and profit
3
star
48

panels_extra_layouts

Extra layouts for the Drupal panels module
PHP
3
star
49

doxymacs-luadoc

Luadoc support for Doxymacs
Emacs Lisp
3
star
50

beautiful-invoicing

A simple invoicing software for producing beautiful invoices using LuaLaTeX
Lua
3
star
51

php-fpm-relaunch

A shell script to run as CGI in thttpd that (re)launches php-fpm on an Nginx 502
Shell
3
star
52

commerce-examples

The drupal commerce examples module
PHP
2
star
53

misc-git-hooks

Miscellaneous git hooks for fun and profit
Shell
2
star
54

angular-generate-urls-sitemap

Generates an URL list given an angular router - this makes sense only for static routes.
Awk
2
star
55

nginx-get-source

A script that downloads a Nginx source tarball verifiying its signature
Shell
2
star
56

encrypt-file

A simple script for encrypting/decrypting a file using Triple DES
Shell
2
star
57

create-ssl-certificates

Helper scripts to create Certificate Signing Requests (CSR) and certifcate bundles - particularly useful for nginx
Shell
2
star
58

clips-cpp-interface

CLIPS C++ interface
C++
2
star
59

memcache-server-config-drupal

A multi-bin Memcache configuration for Drupal
2
star
60

nginx-debianization

nginx debianization using git-buildpackage for building a debian package
C
2
star
61

nginx-debian-package-build-helpers

A bunch of helper scripts to help me build my nginx debian package
Shell
2
star
62

nginx_httpd_twiter_module

this is test nginx module
C
1
star
63

nginx-manpage

A nginx manpage written with ronn
1
star
64

yui_editor

The drupal module for the YUI Rich Text Editor
JavaScript
1
star
65

nginx-http-slice

Nginx module for serving a file in slices (reverse byte-range)
1
star
66

token

Forked version of the Drupal token module
PHP
1
star
67

apache-mod_helloworld

An hello world module for Apache 2.2
C
1
star
68

nginx-http-footer-filter

A nginx module that prints some text in the footer of a request
1
star
69

mkmf

A clone of the mkmf tool of HP-UX (Makefile creation for lazy programmers)
Perl
1
star
70

cg-training

The Commerce Guys training module
PHP
1
star
71

set-laptop-projector

A shell script for setting a projector with a laptop
Shell
1
star
72

lua-linenoise-debian-package

Debian packaging of the Lua linenoise binding.
C
1
star
73

perusio.github.com

My github page
JavaScript
1
star
74

google-weather-nginx-proxy

A script and Nginx configuration for getting Google Weather info on high traffic sites
PHP
1
star
75

nginx-fast-config

A simple helper module for running Drupal 6 with a 0 rewrites Nginx config
PHP
1
star
76

commerce-order-counter

A generic framework for setting the order number/code in Drupal Commerce or Commerce Kickstart.
PHP
1
star