| apiVersion: v1 |
| kind: ConfigMap |
| metadata: |
| name: "{{ include "penpot.fullname" . }}-frontend-nginx" |
| namespace: {{ .Release.Namespace }} |
| labels: |
| {{- include "penpot.labels" . | nindent 4 }} |
| data: |
| nginx.conf: | |
| user www-data; |
| worker_processes auto; |
| pid /run/nginx.pid; |
| include /etc/nginx/modules-enabled/*.conf; |
| |
| events { |
| worker_connections 2048; |
| # multi_accept on; |
| } |
| |
| http { |
| sendfile on; |
| tcp_nopush on; |
| tcp_nodelay on; |
| keepalive_requests 30; |
| keepalive_timeout 65; |
| types_hash_max_size 2048; |
| |
| server_tokens off; |
| |
| reset_timedout_connection on; |
| client_body_timeout 30s; |
| client_header_timeout 30s; |
| |
| include /etc/nginx/mime.types; |
| default_type application/octet-stream; |
| |
| error_log /dev/stdout; |
| access_log /dev/stdout; |
| |
| gzip on; |
| gzip_vary on; |
| gzip_proxied any; |
| gzip_static on; |
| gzip_comp_level 4; |
| gzip_buffers 16 8k; |
| gzip_http_version 1.1; |
| |
| gzip_types text/plain text/css text/javascript application/javascript application/json application/transit+json; |
| |
| resolver 127.0.0.11; |
| |
| map $http_upgrade $connection_upgrade { |
| default upgrade; |
| '' close; |
| } |
| |
| server { |
| listen 80 default_server; |
| server_name _; |
| |
| client_max_body_size 100M; |
| charset utf-8; |
| |
| proxy_http_version 1.1; |
| proxy_set_header Host $http_host; |
| proxy_set_header X-Real-IP $remote_addr; |
| proxy_set_header X-Scheme $scheme; |
| proxy_set_header X-Forwarded-Proto $scheme; |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| |
| etag off; |
| root /var/www/app/; |
| |
| location ~* \.(js|css).*$ { |
| add_header Cache-Control "max-age=86400" always; # 24 hours |
| } |
| |
| location ~* \.(html).*$ { |
| add_header Cache-Control "no-cache, max-age=0" always; |
| } |
| |
| location /api/export { |
| proxy_pass http://{{ include "penpot.fullname" . }}-exporter:6061; |
| } |
| |
| location /api { |
| proxy_pass http://{{ include "penpot.fullname" . }}-backend:6060/api; |
| } |
| |
| location /ws/notifications { |
| proxy_set_header Upgrade $http_upgrade; |
| proxy_set_header Connection 'upgrade'; |
| proxy_pass http://{{ include "penpot.fullname" . }}-backend:6060/ws/notifications; |
| } |
| |
| location @handle_redirect { |
| set $redirect_uri "$upstream_http_location"; |
| set $redirect_host "$upstream_http_x_host"; |
| set $redirect_cache_control "$upstream_http_cache_control"; |
| |
| proxy_buffering off; |
| |
| proxy_set_header Host "$redirect_host"; |
| proxy_hide_header etag; |
| proxy_hide_header x-amz-id-2; |
| proxy_hide_header x-amz-request-id; |
| proxy_hide_header x-amz-meta-server-side-encryption; |
| proxy_hide_header x-amz-server-side-encryption; |
| proxy_pass $redirect_uri; |
| |
| add_header x-internal-redirect "$redirect_uri"; |
| add_header x-cache-control "$redirect_cache_control"; |
| add_header cache-control "$redirect_cache_control"; |
| } |
| |
| location /assets { |
| proxy_pass http://{{ include "penpot.fullname" . }}-backend:6060/assets; |
| recursive_error_pages on; |
| proxy_intercept_errors on; |
| error_page 301 302 307 = @handle_redirect; |
| } |
| |
| location /internal/assets { |
| internal; |
| alias /opt/data/assets; |
| add_header x-internal-redirect "$upstream_http_x_accel_redirect"; |
| } |
| } |
| } |