Created
August 5, 2011 21:51
-
-
Save partydrone/1128608 to your computer and use it in GitHub Desktop.
nginx 1.0.10 configuration with vhost support
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Set another default user than root for security reasons | |
user nginx nginx; | |
# As a thumb rule: One per CPU. If you are serving a large amount | |
# of static files, which requires blocking disk reads, you may want | |
# to increase this from the number of cpu_cores available on your | |
# system. | |
# | |
# The maximum number of connections for Nginx is calculated by: | |
# max_clients = worker_processes * worker_connections | |
worker_processes 1; | |
# Maximum file descriptors that can be opened per process | |
# This should be > worker_connections | |
worker_rlimit_nofile 8192; | |
events { | |
# When you need > 8000 * cpu_cores connections, you start optimizing | |
# your OS, and this is probably the point at where you hire people | |
# who are smarter than you, this is *a lot* of requests. | |
worker_connections 8000; | |
} | |
# Change these paths to somewhere that suits you! | |
error_log logs/error.log; | |
pid logs/nginx.pid; | |
http { | |
# Set the mime-types via the mime.types external file | |
include nginx-mime.types; | |
# And the fallback mime-type | |
default_type application/octet-stream; | |
# Format for our log files | |
log_format main '$remote_addr - $remote_user [$time_local] $status ' | |
'"$request" $body_bytes_sent "$http_referer" ' | |
'"$http_user_agent" "$http_x_forwarded_for"'; | |
# Click tracking! | |
access_log logs/access.log main; | |
# ~2 seconds is often enough for HTML/CSS, but connections in | |
# Nginx are cheap, so generally it's safe to increase it | |
keepalive_timeout 20; | |
# You usually want to serve static files with Nginx | |
sendfile on; | |
tcp_nopush on; # off may be better for Comet/long-poll stuff | |
tcp_nodelay off; # on may be better for Comet/long-poll stuff | |
# Enable Gzip: | |
gzip on; | |
gzip_http_version 1.0; | |
gzip_comp_level 5; | |
gzip_min_length 512; | |
gzip_buffers 4 8k; | |
gzip_proxied any; | |
gzip_types | |
# text/html is always compressed by HttpGzipModule | |
text/css | |
text/javascript | |
text/xml | |
text/plain | |
text/x-component | |
application/javascript | |
application/json | |
application/xml | |
application/rss+xml | |
font/truetype | |
font/opentype | |
application/vnd.ms-fontobject | |
image/svg+xml; | |
# This should be turned on if you are going to have pre-compressed copies (.gz) of | |
# static files available. If not it should be left off as it will cause extra I/O | |
# for the check. It would be better to enable this in a location {} block for | |
# a specific directory: | |
# gzip_static on; | |
gzip_disable "MSIE [1-6]\."; | |
gzip_vary on; | |
# 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:/tmp/.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 { | |
# listen 80 default_server deferred; # for Linux | |
# listen 80 default_server accept_filter=httpready; # for FreeBSD | |
listen 80 default_server; | |
# e.g. "localhost" to accept all connections, or "www.example.com" | |
# to handle the requests for "example.com" (and www.example.com) | |
# server_name www.example.com; | |
# Path for static files | |
root /sites/example.com/public; | |
# Custom 404 page | |
error_page 404 /404.html; | |
# This is pretty long expiry and assume your using | |
# cachebusting with query params like | |
# <script src="application.js?20110529"> | |
# | |
# Just be careful if your using this on a frequently | |
# updated static site. You may want to crank this back | |
# to 5m which is 5 minutes. | |
expires 1M; # yes one month | |
# Static assets | |
location ~* ^.+\.(manifest|appcache)$ { | |
expires -1; | |
access_log logs/static.log; | |
} | |
# Set expires max on static file types (make sure you are using cache busting filenames or query params): | |
location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|eot|mp4|ogg|ogv|webm)$ { | |
expires max; | |
access_log off; | |
} | |
# opt-in to the future | |
add_header "X-UA-Compatible" "IE=Edge,chrome=1"; | |
} | |
# Include virtual host configuration files | |
include /usr/local/nginx/sites-enabled/*.conf; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment