Skip to content

Instantly share code, notes, and snippets.

@joequery
Created January 13, 2012 15:49
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save joequery/1607063 to your computer and use it in GitHub Desktop.
Save joequery/1607063 to your computer and use it in GitHub Desktop.
Convient bash functions for managing nginx and Unicorn
# Kill and restart nginx
function restart_nginx(){
pids=$(pidof nginx)
if [[ -n $pids ]];
then
sudo kill -9 $pids
sudo service nginx restart
fi
}
# Kill unicorn
function kill_unicorn(){
ps aux | grep 'unicorn' | awk '{print $2}' | xargs sudo kill -9
}
# test unicorn process
function test_unicorn(){
# If config/unicorn.rb doesn't exist, don't bother running anything.
unicornFile=config/unicorn.rb
if [ ! -e $unicornFile ];
then
echo "Unicorn file not found"
else
echo "Starting unicorn..."
bundle exec unicorn_rails -c $unicornFile -E production
fi
}
# run unicorn process as a daemon
function start_unicorn(){
# If config/unicorn.rb doesn't exist, don't bother running anything.
unicornFile=config/unicorn.rb
if [ ! -e $unicornFile ];
then
echo "Unicorn file not found"
else
bundle exec unicorn_rails -c $unicornFile -E production -D
fi
}
# Create a symbolic link to a config file in the sites-enabled dir
# arg1: basename of config file in sites-available dir
# Ex: 'nginx_enable railsapp1.com'
function nginx_enable(){
confFile=$1
fullFilePath=/etc/nginx/sites-available/$confFile
symLinkPath=/etc/nginx/sites-enabled/$confFile
# First test to see that the file exists
if [ ! -e $fullFilePath ]
then
printf "%s not found..." "$fullFilePath"
printf "Aborted!\n"
else
# If symlink already exists, delete it so the new configuration
# will take effect.
if [ -e $symLinkPath ]
then
printf "Old symbolic link removed...\n"
sudo rm $symLinkPath
fi
sudo ln -s $fullFilePath $symLinkPath
# Confirm the symlink was created
if [ -e $symLinkPath ]
then
printf "$confFile enabled.\n"
fi
fi
}
# Destroy a symbolic link in the sites-enabled directory.
# arg1: basename of symbolic link to
# Ex: 'nginx_disable railsapp1.com'
function nginx_disable(){
symLink=$1
symLinkPath=/etc/nginx/sites-enabled/$symLink
# First test to see that the link exists
if [ ! -e $symLinkPath ]
then
printf "$symLink is not currently enabled. Exiting.\n"
else
# If the link does exist, delete it.
sudo rm $symLinkPath
# Confirm the symlink was destroyed
if [ ! -e $symLinkPath ]
then
printf "$symLink disabled.\n"
fi
fi
}
@maggit
Copy link

maggit commented Oct 28, 2014

You may add here your

server {

...

}

statements for each of your virtual hosts to this file

upstream raquelhernandez {
server unix:/home/raquel/raquelhernandez/current/tmp/sockets/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name raquelhernandez.net;
root /home/raquel/raquelhernandez/current/public;
location / {
try_files $uri @RaquelHernandez;
}

location ~ (.php|.aspx|.asp|myadmin|php-cgi|php5|cgi-bin) {
return 404;
}

location @RaquelHernandez {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://raquelhernandez;
}
}

You should look at the following URL's in order to grasp a solid understanding

of Nginx configuration files in order to fully unleash the power of Nginx.

http://wiki.nginx.org/Pitfalls

http://wiki.nginx.org/QuickStart

http://wiki.nginx.org/Configuration

Generally, you will want to move this file somewhere, and start with a clean

file but keep this around for reference. Or just disable in sites-enabled.

Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name localhost;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
#   proxy_pass http://127.0.0.1:8080;    
#}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
#   root /usr/share/nginx/html;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#   fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
#   fastcgi_pass unix:/var/run/php5-fpm.sock;
#   fastcgi_index index.php;
#   include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#   deny all;
#}

}

another virtual host using mix of IP-, name-, and port-based configuration

server {

listen 8000;

listen somename:8080;

server_name somename alias another.alias;

root html;

index index.html index.htm;

location / {

try_files $uri $uri/ =404;

}

}

HTTPS server

server {

listen 443;

server_name localhost;

root html;

index index.html index.htm;

ssl on;

ssl_certificate cert.pem;

ssl_certificate_key cert.key;

ssl_session_timeout 5m;

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";

ssl_prefer_server_ciphers on;

location / {

try_files $uri $uri/ =404;

}

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment