2013-08-14 02:00:20 +08:00
|
|
|
# Additional MIME types that you'd like nginx to handle go in here
|
|
|
|
types {
|
|
|
|
text/csv csv;
|
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
upstream discourse {
|
2013-08-07 12:06:40 +08:00
|
|
|
server unix:/var/www/discourse/tmp/sockets/thin.0.sock;
|
|
|
|
server unix:/var/www/discourse/tmp/sockets/thin.1.sock;
|
|
|
|
server unix:/var/www/discourse/tmp/sockets/thin.2.sock;
|
|
|
|
server unix:/var/www/discourse/tmp/sockets/thin.3.sock;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
|
2013-11-18 12:53:36 +08:00
|
|
|
# If you are going to use Puma, use these:
|
|
|
|
#
|
|
|
|
# upstream discourse {
|
|
|
|
# server unix:/var/www/discourse/tmp/sockets/puam.sock;
|
|
|
|
# }
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
server {
|
|
|
|
|
|
|
|
listen 80;
|
|
|
|
gzip on;
|
|
|
|
gzip_min_length 1000;
|
|
|
|
gzip_types application/json text/css application/x-javascript;
|
|
|
|
|
2013-05-29 12:07:26 +08:00
|
|
|
server_name enter.your.web.hostname.here;
|
2013-03-01 00:24:03 +08:00
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
sendfile on;
|
|
|
|
|
|
|
|
keepalive_timeout 65;
|
2013-09-07 01:18:42 +08:00
|
|
|
|
|
|
|
# maximum file upload size (keep up to date when changing the corresponding site setting)
|
2013-07-21 15:42:07 +08:00
|
|
|
client_max_body_size 2m;
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2013-09-07 01:18:42 +08:00
|
|
|
# path to discourse's public directory
|
|
|
|
set $public /var/www/discourse/public;
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
location / {
|
2013-09-07 01:18:42 +08:00
|
|
|
root $public;
|
2014-01-09 09:36:42 +08:00
|
|
|
|
2013-12-01 12:18:59 +08:00
|
|
|
location ~* \.(eot|ttf|woff)$ {
|
|
|
|
add_header Access-Control-Allow-Origin *;
|
|
|
|
expires 1y;
|
|
|
|
add_header Cache-Control public;
|
|
|
|
}
|
2013-09-07 01:18:42 +08:00
|
|
|
|
|
|
|
location ~ ^/assets/ {
|
|
|
|
expires 1y;
|
2013-08-14 18:20:05 +08:00
|
|
|
add_header Cache-Control public;
|
|
|
|
add_header ETag "";
|
2013-09-07 01:18:42 +08:00
|
|
|
break;
|
2013-08-14 18:20:05 +08:00
|
|
|
}
|
|
|
|
|
2013-09-07 01:18:42 +08:00
|
|
|
location ~ ^/uploads/ {
|
2013-02-06 03:16:51 +08:00
|
|
|
expires 1y;
|
|
|
|
add_header Cache-Control public;
|
|
|
|
add_header ETag "";
|
|
|
|
|
2013-09-07 01:18:42 +08:00
|
|
|
## optional upload anti-hotlinking rules
|
|
|
|
#valid_referers none blocked mysite.com *.mysite.com;
|
|
|
|
#if ($invalid_referer) {
|
|
|
|
# return 403;
|
|
|
|
#}
|
2013-03-01 00:24:03 +08:00
|
|
|
|
2013-10-01 23:52:04 +08:00
|
|
|
# custom CSS
|
|
|
|
location ~ /stylesheet-cache/ { try_files $uri =404; }
|
|
|
|
# images
|
2013-09-07 01:18:42 +08:00
|
|
|
location ~* \.(gif|png|jpg|jpeg|bmp|tif|tiff)$ { try_files $uri =404; }
|
2013-10-01 23:52:04 +08:00
|
|
|
# thumbnails & optimized images
|
2013-09-07 01:18:42 +08:00
|
|
|
location ~ /_optimized/ { try_files $uri =404; }
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2013-09-07 01:18:42 +08:00
|
|
|
# attachments must go through the rails application to get the right content-disposition header
|
|
|
|
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
|
|
|
|
proxy_set_header X-Accel-Mapping $public/=/downloads/;
|
2013-02-06 03:16:51 +08:00
|
|
|
proxy_pass http://discourse;
|
|
|
|
break;
|
|
|
|
}
|
2013-03-01 00:24:03 +08:00
|
|
|
|
2013-09-07 01:18:42 +08:00
|
|
|
try_files $uri @discourse;
|
|
|
|
}
|
|
|
|
|
|
|
|
location /downloads/ {
|
|
|
|
internal;
|
|
|
|
alias $public/;
|
|
|
|
}
|
|
|
|
|
|
|
|
location @discourse {
|
|
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
2014-01-09 09:36:42 +08:00
|
|
|
|
|
|
|
# attempt to preserve the proto
|
|
|
|
map $http_x_forwarded_proto $thescheme {
|
|
|
|
default $scheme;
|
|
|
|
https https;
|
|
|
|
}
|
|
|
|
|
|
|
|
proxy_set_header X-Forwarded-Proto $thescheme;
|
2013-09-07 01:18:42 +08:00
|
|
|
proxy_set_header Host $http_host;
|
|
|
|
|
|
|
|
proxy_pass http://discourse;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|