summaryrefslogtreecommitdiff
path: root/playbooks.d/webserver-nginx/share/sites.d/https/nl.tyil.cloud
blob: c4a86cb4e667252f8d5859f2d66ca66f39c66513 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;

	server_name cloud.tyil.nl;

	error_log  /var/log/nginx/cloud-error.log;
	access_log /var/log/nginx/cloud-access.log;

	ssl_certificate /etc/letsencrypt/live/cloud.tyil.nl/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/cloud.tyil.nl/privkey.pem;

	include /etc/nginx/snippets.d/ssl.conf;
	include /etc/nginx/snippets.d/certbot.conf;

	# Set timeouts
	fastcgi_read_timeout 300;
	proxy_read_timeout 300;

	# Set upload size
	client_max_body_size 200M;
	fastcgi_buffers 64 4K;

	# Add (security) headers
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header X-Robots-Tag none;
	add_header X-Download-Options noopen;
	add_header X-Permitted-Cross-Domain-Policies none;
	add_header Referrer-Policy "no-referrer";
	add_header X-Frame-Options "SAMEORIGIN";
	add_header Strict-Transport-Security "max-age=63072000" always;

	# Remove headers
	fastcgi_hide_header X-Powered-By;

	# Enable gzip
	gzip off;
	gzip_vary on;
	gzip_comp_level 4;
	gzip_min_length 256;
	gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
	gzip_types
		application/atom+xml
		application/javascript
		application/json
		application/ld+json
		application/manifest+json
		application/rss+xml
		application/vnd.geo+json
		application/vnd.ms-fontobject
		application/x-font-ttf
		application/x-web-app-manifest+json
		application/xhtml+xml
		application/xml
		font/opentype
		image/bmp
		image/svg+xml
		image/x-icon
		text/cache-manifest
		text/css
		text/plain
		text/vcard
		text/vnd.rim.location.xloc
		text/vtt
		text/x-component
		text/x-cross-domain-policy
		;

	root /var/www/nl.tyil.cloud;

	location / {
		rewrite ^ /index.php?$request_uri;
	}

	location = /robots.txt {
		allow all;
		log_not_found off;
		access_log off;
	}

	location ^~ /.well-known {
		rewrite ^/\.well-known/host-meta.json /public.php?service=host-meta.json last;
		rewrite ^/\.well-known/host-meta      /public.php?service=host-meta      last;
		rewrite ^/\.well-known/webfinger      /public.php?service=webfinger      last;
		rewrite ^/\.well-known/nodeinfo       /public.php?service=nodeinfo       last;

		location = /.well-known/carddav   { return 301 /remote.php/dav/; }
		location = /.well-known/caldav    { return 301 /remote.php/dav/; }

		#location ^~ /.well-known          { return 301 /index.php$uri; }

		try_files $uri $uri/ =404;
	}

	location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
		deny all;
	}

	location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
		deny all;
	}

	location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		include snippets.d/fcgi.conf;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param HTTPS on;
		fastcgi_param modHeadersAvailable true;
		fastcgi_param front_controller_active true;
		fastcgi_pass localhost:9000;
		fastcgi_intercept_errors on;
		fastcgi_request_buffering off;
	}

	location ~ ^/(?:updater|ocs-provider)(?:$|/) {
		try_files $uri/ =404;
		index index.php;
	}

	location ~ \.(?:css|js|woff|svg|gif)$ {
		try_files $uri /index.php$request_uri;
		add_header Cache-Control "public, max-age=15778463";
		add_header X-Content-Type-Options nosniff;
		add_header X-XSS-Protection "1; mode=block";
		add_header X-Robots-Tag none;
		add_header X-Download-Options noopen;
		add_header X-Permitted-Cross-Domain-Policies none; 
		access_log off;
	}

	location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
		try_files $uri /index.php$request_uri;
		access_log off;
	}
}