docker-compose environment for the entire system
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.3 KiB

limit_req_zone $binary_remote_addr zone=loginlimit:10m rate=1r/s;
server {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
#include /etc/nginx/mime.types;
#default_type application/octet-stream;
gzip on;
gzip_disable "msie6";
proxy_read_timeout 1800s;
chunked_transfer_encoding on;
client_body_buffer_size 10M;
client_max_body_size 10M;
# store responses to anonymous users for up to 1 minute
proxy_cache mycache;
proxy_cache_valid any 1m;
add_header X-Cache-Status $upstream_cache_status;
# ignore the set cookie header when deciding to
# store a response in the cache
proxy_ignore_headers Cache-Control Set-Cookie Expires;
# PUT requests always bypass the cache
# logged in sessions also do not populate the cache
# to avoid serving personal data to anonymous users
proxy_cache_methods GET HEAD;
proxy_no_cache $cookie_sessionid;
proxy_cache_bypass $cookie_sessionid;
# tell the web container the address of the outside client
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
# rate limit the login or password reset pages
location ~ ^/(login[^-/]|password-reset|resend-link|2fa-check) {
limit_req zone=loginlimit;
proxy_pass http://bookwyrm-web:8000;
# do not log periodic polling requests from logged in users
location /api/updates/ {
access_log off;
proxy_pass http://bookwyrm-web:8000;
# monitor the celery queues with flower, no caching enabled
location /flower/ {
proxy_pass http://bookwyrm-flower:8888;
proxy_cache_bypass 1;
# forward any cache misses or bypass to the web container
location / {
proxy_pass http://bookwyrm-web:8000;
# directly serve images and static files from the
# bookwyrm filesystem using sendfile.
# make the logs quieter by not reporting these requests
location ~ ^/(images|static)/ {
root /bookwyrm/app;
try_files $uri =404;
add_header X-Cache-Status STATIC;
access_log off;
include /etc/nginx/includes/ssl.conf;