summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorTyler Mercier <tylermercier@gmail.com>2013-07-23 10:48:36 -0600
committerTyler Mercier <tylermercier@gmail.com>2013-07-23 10:48:36 -0600
commit7d6ca34e0d82e37c7f13adfa363d3f48d030ba9a (patch)
tree93fdffb124b59f41d8254c4084938c5d52f40984 /config
parent00a1c7ea86849f1079d1b817c9ca854573d1f0bf (diff)
add nginx configs. update unicorn config
Diffstat (limited to 'config')
-rw-r--r--config/deploy.rb1
-rw-r--r--config/nginx.txt100
-rw-r--r--config/nginx_parley.txt86
-rw-r--r--config/unicorn.rb2
4 files changed, 166 insertions, 23 deletions
diff --git a/config/deploy.rb b/config/deploy.rb
index 8ebbda6..2606b9b 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -29,6 +29,7 @@ set :repository, "git@github.com:madebyuppercut/parley.git"
# set :rvm_ruby_string, :local
+# rvm info - to get this
set :default_environment, {
'PATH' => "/home/demo/.rvm/gems/ruby-2.0.0-p247/bin:/home/demo/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/demo/.rvm/rubies/ruby-2.0.0-p247/bin:/home/demo/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games",
'RUBY_VERSION' => 'ruby-2.0.0-p247',
diff --git a/config/nginx.txt b/config/nginx.txt
index 73d9d40..aeee82e 100644
--- a/config/nginx.txt
+++ b/config/nginx.txt
@@ -1,23 +1,79 @@
-server {
- listen 80 default deferred;
- # server_name example.com;
- root /home/demo/apps/parley/current/public;
-
- location ^~ /assets/ {
- gzip_static on;
- expires max;
- add_header Cache-Control public;
- }
-
- try_files $uri/index.html $uri @unicorn;
- location @unicorn {
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Host $http_host;
- proxy_redirect off;
- proxy_pass http://unicorn;
- }
-
- error_page 500 502 503 504 /500.html;
- client_max_body_size 4G;
- keepalive_timeout 10;
+# This is example contains the bare mininum to get nginx going with
+# Unicorn or Rainbows! servers. Generally these configuration settings
+# are applicable to other HTTP application servers (and not just Ruby
+# ones), so if you have one working well for proxying another app
+# server, feel free to continue using it.
+#
+# The only setting we feel strongly about is the fail_timeout=0
+# directive in the "upstream" block. max_fails=0 also has the same
+# effect as fail_timeout=0 for current versions of nginx and may be
+# used in its place.
+#
+# Users are strongly encouraged to refer to nginx documentation for more
+# details and search for other example configs.
+
+# you generally only need one nginx worker unless you're serving
+# large amounts of static files which require blocking disk reads
+worker_processes 1;
+
+# # drop privileges, root is needed on most systems for binding to port 80
+# # (or anything < 1024). Capability-based security may be available for
+# # your system and worth checking out so you won't need to be root to
+# # start nginx to bind on 80
+user nobody nogroup; # for systems with a "nogroup"
+# user nobody nobody; # for systems with "nobody" as a group instead
+
+# Feel free to change all paths to suite your needs here, of course
+pid /var/run/nginx.pid;
+error_log /var/log/nginx/error.log;
+
+events {
+ worker_connections 1024; # increase if you have lots of clients
+ accept_mutex off; # "on" if nginx worker_processes > 1
+ # use epoll; # enable for Linux 2.6+
+ # use kqueue; # enable for FreeBSD, OSX
+}
+
+http {
+ # nginx will find this file in the config directory set at nginx build time
+ include mime.types;
+
+ # tacocat
+ types_hash_max_size 2048;
+
+ # fallback in case we can't determine a type
+ default_type application/octet-stream;
+
+ # click tracking!
+ access_log /var/log/nginx/access.log combined;
+
+ # you generally want to serve static files with nginx since neither
+ # Unicorn nor Rainbows! is optimized for it at the moment
+ sendfile on;
+
+ tcp_nopush on; # off may be better for *some* Comet/long-poll stuff
+ tcp_nodelay off; # on may be better for some Comet/long-poll stuff
+
+ # we haven't checked to see if Rack::Deflate on the app server is
+ # faster or not than doing compression via nginx. It's easier
+ # to configure it all in one place here for static files and also
+ # to disable gzip for clients who don't get gzip/deflate right.
+ # There are other gzip settings that may be needed used to deal with
+ # bad clients out there, see http://wiki.nginx.org/NginxHttpGzipModule
+ gzip on;
+ gzip_http_version 1.0;
+ gzip_proxied any;
+ gzip_min_length 500;
+ gzip_disable "MSIE [1-6]\.";
+ gzip_types text/plain text/xml text/css
+ text/comma-separated-values
+ text/javascript application/x-javascript
+ application/atom+xml;
+
+ ##
+ # Virtual Host Configs
+ ##
+
+ include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/sites-enabled/*;
}
diff --git a/config/nginx_parley.txt b/config/nginx_parley.txt
new file mode 100644
index 0000000..10cfd29
--- /dev/null
+++ b/config/nginx_parley.txt
@@ -0,0 +1,86 @@
+# this can be any application server, not just Unicorn/Rainbows!
+upstream app_server {
+ # fail_timeout=0 means we always retry an upstream even if it failed
+ # to return a good HTTP response (in case the Unicorn master nukes a
+ # single worker for timing out).
+
+ # for UNIX domain socket setups:
+ server unix:/home/demo/apps/parley/current/tmp/sockets/unicorn.sock fail_timeout=0;
+
+ # for TCP setups, point these to your backend servers
+ # server 192.168.0.7:8080 fail_timeout=0;
+ # server 192.168.0.8:8080 fail_timeout=0;
+ # server 192.168.0.9:8080 fail_timeout=0;
+}
+
+server {
+ # enable one of the following if you're on Linux or FreeBSD
+ # listen 80 default deferred; # for Linux
+ # listen 80 default accept_filter=httpready; # for FreeBSD
+
+ # If you have IPv6, you'll likely want to have two separate listeners.
+ # One on IPv4 only (the default), and another on IPv6 only instead
+ # of a single dual-stack listener. A dual-stack listener will make
+ # for ugly IPv4 addresses in $remote_addr (e.g ":ffff:10.0.0.1"
+ # instead of just "10.0.0.1") and potentially trigger bugs in
+ # some software.
+ # listen [::]:80 ipv6only=on; # deferred or accept_filter recommended
+
+ client_max_body_size 4G;
+ server_name _;
+
+ # ~2 seconds is often enough for most folks to parse HTML/CSS and
+ # retrieve needed images/icons/frames, connections are cheap in
+ # nginx so increasing this is generally safe...
+ keepalive_timeout 5;
+
+ # path for static files
+ root /path/to/app/current/public;
+
+ # Prefer to serve static files directly from nginx to avoid unnecessary
+ # data copies from the application server.
+ #
+ # try_files directive appeared in in nginx 0.7.27 and has stabilized
+ # over time. Older versions of nginx (e.g. 0.6.x) requires
+ # "if (!-f $request_filename)" which was less efficient:
+ # http://bogomips.org/unicorn.git/tree/examples/nginx.conf?id=v3.3.1#n127
+ try_files $uri/index.html $uri.html $uri @app;
+
+ location @app {
+ # an HTTP header important enough to have its own Wikipedia entry:
+ # http://en.wikipedia.org/wiki/X-Forwarded-For
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+
+ # enable this if you forward HTTPS traffic to unicorn,
+ # this helps Rack set the proper URL scheme for doing redirects:
+ # proxy_set_header X-Forwarded-Proto $scheme;
+
+ # pass the Host: header from the client right along so redirects
+ # can be set properly within the Rack application
+ proxy_set_header Host $http_host;
+
+ # we don't want nginx trying to do something clever with
+ # redirects, we set the Host: header above already.
+ proxy_redirect off;
+
+ # set "proxy_buffering off" *only* for Rainbows! when doing
+ # Comet/long-poll/streaming. It's also safe to set if you're using
+ # only serving fast clients with Unicorn + nginx, but not slow
+ # clients. You normally want nginx to buffer responses to slow
+ # clients, even with Rails 3.1 streaming because otherwise a slow
+ # client can become a bottleneck of Unicorn.
+ #
+ # The Rack application may also set "X-Accel-Buffering (yes|no)"
+ # in the response headers do disable/enable buffering on a
+ # per-response basis.
+ # proxy_buffering off;
+
+ proxy_pass http://app_server;
+ }
+
+ # Rails error pages
+ error_page 500 502 503 504 /500.html;
+ location = /500.html {
+ root /path/to/app/current/public;
+ }
+}
diff --git a/config/unicorn.rb b/config/unicorn.rb
index 6514417..b3e6286 100644
--- a/config/unicorn.rb
+++ b/config/unicorn.rb
@@ -27,7 +27,7 @@ working_directory "/home/demo/apps/parley" # available in 0.94.0+
# listen on both a Unix domain socket and a TCP port,
# we use a shorter backlog for quicker failover when busy
-listen "/tmp/unicorn.parley.sock", :backlog => 64
+listen "#{root}/tmp/sockets/unicorn.sock", :backlog => 64
listen 8080, :tcp_nopush => true
# nuke workers after 30 seconds instead of 60 seconds (the default)