server_name davical.heureux-cyclage.org davical.autogeree.net; client_body_buffer_size 8k; client_max_body_size 10m; rewrite ^\.well-known(.*)$ /caldav.php/.well-known$1; rewrite ^principals/users(.*)$ /caldav.php$1; location / { # NOTE: to get DAViCal and nginx working with iCal 6.0 clients. return 301 /caldav.php$1; } location ~* ^.+.(css|gif|html|ico|jpeg|js|jpg|png|txt|xml)$ { root /usr/share/davical/htdocs/; access_log off; expires 30d; log_not_found off; } location ~ /\. { access_log off; deny all; log_not_found off; } location ~ \.php(|/.*)$ { root /usr/share/davical/htdocs/; keepalive_timeout 0; include /etc/nginx/conf.d/fastcgi.conf; if ($request_method = OPTIONS) { add_header Access-Control-Allow-Credentials "true"; add_header Access-Control-Allow-Headers "User-Agent,Authorization,Content-type,Depth,If-match,If-None-Match,Lock-Token,Timeout,Destination,Overwrite,X-client,X-Requested-With"; add_header Access-Control-Allow-Methods "GET,POST,OPTIONS,PROPFIND,REPORT,PUT,MOVE,DELETE,LOCK,UNLOCK"; add_header Access-Control-Allow-Origin "*"; add_header Content-Length 0; add_header Content-Type text/plain; return 200; } set $no_cache "0"; if ($request_method !~ ^(GET|HEAD)$) { # NOTE: if non GET/HEAD, don't cache and mark user as uncacheable for 1 second via cookie. set $no_cache "1"; } if ($no_cache = "1") { # NOTE: drop no cache cookie if need be (for some reason, add_header fails if included in prior if-block). add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; } if ($http_cookie ~* "_mcnc") { # NOTE: bypass cache if no-cache cookie is set set $no_cache "1"; } fastcgi_cache_bypass $no_cache; fastcgi_cache_use_stale updating; fastcgi_cache_valid 200 10s; fastcgi_cache_valid 404 10m; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; fastcgi_index index.php; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_no_cache $no_cache; fastcgi_param REDIRECT_STATUS 200; # NOTE: PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_pass_header Cookie; fastcgi_pass_header Set-Cookie; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php5/fpm/davical; } # vim: ft=sh