server { listen 80; gzip on; gzip_vary on; gzip_min_length 1024; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/javascript application/xml; gzip_disable "MSIE [1-6]\."; root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; # Any route containing a file extension (e.g. /devicesfile.js) location ~ ^.+\..+$ { try_files $uri =404; location ~* \.(?:html|json|txt)$ { expires -1; } # CRA generates filenames with hashes so we can # tell the browser to keep in cache the resources. location ~* \.(?:css|js|md|woff2?|eot|ttf|xml)$ { expires 1y; access_log off; add_header Cache-Control "public"; # Allow fonts and scripts to be downloaded from pages # served by Keycloak (CORS for --external-request) # We allow .md for beeing able to fetch the terms of service. location ~* \.(?:js|woff2?|eot|ttf|xml|md)$ { add_header Access-Control-Allow-Origin *; } } } }