From 2310e32636f0febea023841237fb4911751e3fba Mon Sep 17 00:00:00 2001 From: Daoud Clarke Date: Sun, 15 Oct 2023 16:30:33 +0100 Subject: [PATCH 1/5] Try a default config --- nginx.conf.sigil | 196 ++++++----------------------------------------- 1 file changed, 22 insertions(+), 174 deletions(-) diff --git a/nginx.conf.sigil b/nginx.conf.sigil index 4c2d502..02b180b 100644 --- a/nginx.conf.sigil +++ b/nginx.conf.sigil @@ -1,188 +1,36 @@ -{{ range $port_map := .PROXY_PORT_MAP | split " " }} -{{ $port_map_list := $port_map | split ":" }} -{{ $scheme := index $port_map_list 0 }} -{{ $listen_port := index $port_map_list 1 }} -{{ $upstream_port := index $port_map_list 2 }} - -{{ if eq $scheme "http" }} server { - listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }}; - listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }}; - {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} - access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; - error_log {{ $.NGINX_ERROR_LOG_PATH }}; + listen [::]:{{ .NGINX_PORT }}; + listen {{ .NGINX_PORT }}; + server_name {{ .NOSSL_SERVER_NAME }}; + access_log /var/log/nginx/{{ .APP }}-access.log; + error_log /var/log/nginx/{{ .APP }}-error.log; - include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; - location / { - return 301 https://$host:{{ $.PROXY_SSL_PORT }}$request_uri; - } -} -{{ else if eq $scheme "https"}} -server { - listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ else if eq $.SPDY_SUPPORTED "true" }}spdy{{ end }}; - listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ else if eq $.SPDY_SUPPORTED "true" }}spdy{{ end }}; - {{ if $.SSL_SERVER_NAME }}server_name {{ $.SSL_SERVER_NAME }}; {{ end }} - {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} - access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; - error_log {{ $.NGINX_ERROR_LOG_PATH }}; + # set a custom header for requests + add_header X-Served-By www-ec2-01; - ssl_certificate {{ $.APP_SSL_PATH }}/server.crt; - ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key; - ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }}; - ssl_prefer_server_ciphers off; - - keepalive_timeout 70; - {{ if and (eq $.SPDY_SUPPORTED "true") (ne $.HTTP2_SUPPORTED "true") }}add_header Alternate-Protocol {{ $.PROXY_SSL_PORT }}:npn-spdy/2;{{ end }} + gzip on; + gzip_min_length 1100; + gzip_buffers 4 32k; + gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; + gzip_vary on; + gzip_comp_level 6; location / { - - -## Start CORS here. See http://enable-cors.org/server_nginx.html for comments - - if ($request_method = 'OPTIONS') { - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; - # - # Custom headers and headers various browsers *should* be OK with but aren't - # - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; - # - # Tell client that this pre-flight info is valid for 20 days - # - add_header 'Access-Control-Max-Age' 1728000; - add_header 'Content-Type' 'text/plain; charset=utf-8'; - add_header 'Content-Length' 0; - return 204; - } - if ($request_method = 'POST') { - add_header 'Access-Control-Allow-Origin' '*' always; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; - add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; - } - if ($request_method = 'GET') { - add_header 'Access-Control-Allow-Origin' '*' always; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; - add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; - } -### End CORS - - gzip on; - gzip_min_length 1100; - gzip_buffers 4 32k; - gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; - gzip_vary on; - gzip_comp_level 6; - - proxy_pass http://{{ $.APP }}-{{ $upstream_port }}; - {{ if eq $.HTTP2_PUSH_SUPPORTED "true" }}http2_push_preload on; {{ end }} + proxy_pass http://{{ .APP }}; proxy_http_version 1.1; - proxy_read_timeout {{ $.PROXY_READ_TIMEOUT }}; - proxy_buffer_size {{ $.PROXY_BUFFER_SIZE }}; - proxy_buffering {{ $.PROXY_BUFFERING }}; - proxy_buffers {{ $.PROXY_BUFFERS }}; - proxy_busy_buffers_size {{ $.PROXY_BUSY_BUFFERS_SIZE }}; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $http_connection; + proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For {{ $.PROXY_X_FORWARDED_FOR }}; - proxy_set_header X-Forwarded-Port {{ $.PROXY_X_FORWARDED_PORT }}; - proxy_set_header X-Forwarded-Proto {{ $.PROXY_X_FORWARDED_PROTO }}; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Request-Start $msec; - {{ if $.PROXY_X_FORWARDED_SSL }}proxy_set_header X-Forwarded-Ssl {{ $.PROXY_X_FORWARDED_SSL }};{{ end }} - } - - {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} - include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; - - ## Static file hosting - location /static/ { - alias /var/lib/dokku/data/storage/mwmbl/; - } - - ## Root and stats served statically - location = / { - root /var/lib/dokku/data/storage/mwmbl; - try_files /index.html =404; - } - - location ~ ^\/stats\/?$ { - root /var/lib/dokku/data/storage/mwmbl; - try_files /stats/index.html =404; - } - - error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html; - location /400-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; - } - - error_page 404 /404-error.html; - location /404-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; - } - - error_page 500 501 503 504 505 506 507 508 509 510 511 /500-error.html; - location /500-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; - } - - error_page 502 /502-error.html; - location /502-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; } + include {{ .DOKKU_ROOT }}/{{ .APP }}/nginx.conf.d/*.conf; } -{{ else if eq $scheme "grpc"}} -{{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}} -server { - listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} http2; - listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} http2; - {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} - access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; - error_log {{ $.NGINX_ERROR_LOG_PATH }}; - location / { - grpc_pass grpc://{{ $.APP }}-{{ $upstream_port }}; - } - {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} - include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; -} -{{ end }}{{ end }} -{{ else if eq $scheme "grpcs"}} -{{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}} -server { - listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl http2; - listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl http2; - {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} - access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; - error_log {{ $.NGINX_ERROR_LOG_PATH }}; - - ssl_certificate {{ $.APP_SSL_PATH }}/server.crt; - ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key; - ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }}; - ssl_prefer_server_ciphers off; - - location / { - grpc_pass grpc://{{ $.APP }}-{{ $upstream_port }}; - } - - {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} - include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; -} -{{ end }}{{ end }} +upstream {{ .APP }} { +{{ range .DOKKU_APP_LISTENERS | split " " }} + server {{ . }}; {{ end }} -{{ end }} - -{{ if $.DOKKU_APP_WEB_LISTENERS }} -{{ range $upstream_port := $.PROXY_UPSTREAM_PORTS | split " " }} -upstream {{ $.APP }}-{{ $upstream_port }} { -{{ range $listeners := $.DOKKU_APP_WEB_LISTENERS | split " " }} -{{ $listener_list := $listeners | split ":" }} -{{ $listener_ip := index $listener_list 0 }} - server {{ $listener_ip }}:{{ $upstream_port }};{{ end }} } -{{ end }}{{ end }} From 66cdbd3d47d873225bf84d6b0ca6f283d93c3886 Mon Sep 17 00:00:00 2001 From: Daoud Clarke Date: Sun, 15 Oct 2023 16:41:31 +0100 Subject: [PATCH 2/5] disable ipv6 --- nginx.conf.sigil | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nginx.conf.sigil b/nginx.conf.sigil index 02b180b..da19df9 100644 --- a/nginx.conf.sigil +++ b/nginx.conf.sigil @@ -1,5 +1,5 @@ server { - listen [::]:{{ .NGINX_PORT }}; +# listen [::]:{{ .NGINX_PORT }}; listen {{ .NGINX_PORT }}; server_name {{ .NOSSL_SERVER_NAME }}; access_log /var/log/nginx/{{ .APP }}-access.log; From a4ee3cb195106b7295ad6542a40b472e01f103cd Mon Sep 17 00:00:00 2001 From: Daoud Clarke Date: Sun, 15 Oct 2023 16:43:36 +0100 Subject: [PATCH 3/5] Use default config file --- nginx.conf.sigil | 213 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 182 insertions(+), 31 deletions(-) diff --git a/nginx.conf.sigil b/nginx.conf.sigil index da19df9..59a40a6 100644 --- a/nginx.conf.sigil +++ b/nginx.conf.sigil @@ -1,36 +1,187 @@ +{{ range $port_map := .PROXY_PORT_MAP | split " " }} +{{ $port_map_list := $port_map | split ":" }} +{{ $scheme := index $port_map_list 0 }} +{{ $listen_port := index $port_map_list 1 }} +{{ $upstream_port := index $port_map_list 2 }} + +{{ if eq $scheme "http" }} server { -# listen [::]:{{ .NGINX_PORT }}; - listen {{ .NGINX_PORT }}; - server_name {{ .NOSSL_SERVER_NAME }}; - access_log /var/log/nginx/{{ .APP }}-access.log; - error_log /var/log/nginx/{{ .APP }}-error.log; - - # set a custom header for requests - add_header X-Served-By www-ec2-01; - - gzip on; - gzip_min_length 1100; - gzip_buffers 4 32k; - gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; - gzip_vary on; - gzip_comp_level 6; - - location / { - proxy_pass http://{{ .APP }}; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header X-Forwarded-For $remote_addr; - proxy_set_header X-Forwarded-Port $server_port; - proxy_set_header X-Request-Start $msec; + listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }}; + listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }}; + {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} + access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; + error_log {{ $.NGINX_ERROR_LOG_PATH }}; +{{ if (and (eq $listen_port "80") ($.SSL_INUSE)) }} + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; + location / { + return 301 https://$host:{{ $.PROXY_SSL_PORT }}$request_uri; } - include {{ .DOKKU_ROOT }}/{{ .APP }}/nginx.conf.d/*.conf; -} +{{ else }} + location / { -upstream {{ .APP }} { -{{ range .DOKKU_APP_LISTENERS | split " " }} - server {{ . }}; + gzip on; + gzip_min_length 1100; + gzip_buffers 4 32k; + gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/wasm application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; + gzip_vary on; + gzip_comp_level 6; + + proxy_pass http://{{ $.APP }}-{{ $upstream_port }}; + proxy_http_version 1.1; + proxy_read_timeout {{ $.PROXY_READ_TIMEOUT }}; + proxy_buffer_size {{ $.PROXY_BUFFER_SIZE }}; + proxy_buffering {{ $.PROXY_BUFFERING }}; + proxy_buffers {{ $.PROXY_BUFFERS }}; + proxy_busy_buffers_size {{ $.PROXY_BUSY_BUFFERS_SIZE }}; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $http_connection; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For {{ $.PROXY_X_FORWARDED_FOR }}; + proxy_set_header X-Forwarded-Port {{ $.PROXY_X_FORWARDED_PORT }}; + proxy_set_header X-Forwarded-Proto {{ $.PROXY_X_FORWARDED_PROTO }}; + proxy_set_header X-Request-Start $msec; + {{ if $.PROXY_X_FORWARDED_SSL }}proxy_set_header X-Forwarded-Ssl {{ $.PROXY_X_FORWARDED_SSL }};{{ end }} + } + + {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} + + error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html; + location /400-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + + error_page 404 /404-error.html; + location /404-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + + error_page 500 501 502 503 504 505 506 507 508 509 510 511 /500-error.html; + location /500-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; {{ end }} } +{{ else if eq $scheme "https"}} +server { + listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ end }}; + listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ end }}; + {{ if $.SSL_SERVER_NAME }}server_name {{ $.SSL_SERVER_NAME }}; {{ end }} + {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} + access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; + error_log {{ $.NGINX_ERROR_LOG_PATH }}; + + ssl_certificate {{ $.APP_SSL_PATH }}/server.crt; + ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key; + ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }}; + ssl_prefer_server_ciphers off; + + keepalive_timeout 70; + + location / { + + gzip on; + gzip_min_length 1100; + gzip_buffers 4 32k; + gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; + gzip_vary on; + gzip_comp_level 6; + + proxy_pass http://{{ $.APP }}-{{ $upstream_port }}; + {{ if eq $.HTTP2_PUSH_SUPPORTED "true" }}http2_push_preload on; {{ end }} + proxy_http_version 1.1; + proxy_read_timeout {{ $.PROXY_READ_TIMEOUT }}; + proxy_buffer_size {{ $.PROXY_BUFFER_SIZE }}; + proxy_buffering {{ $.PROXY_BUFFERING }}; + proxy_buffers {{ $.PROXY_BUFFERS }}; + proxy_busy_buffers_size {{ $.PROXY_BUSY_BUFFERS_SIZE }}; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $http_connection; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For {{ $.PROXY_X_FORWARDED_FOR }}; + proxy_set_header X-Forwarded-Port {{ $.PROXY_X_FORWARDED_PORT }}; + proxy_set_header X-Forwarded-Proto {{ $.PROXY_X_FORWARDED_PROTO }}; + proxy_set_header X-Request-Start $msec; + {{ if $.PROXY_X_FORWARDED_SSL }}proxy_set_header X-Forwarded-Ssl {{ $.PROXY_X_FORWARDED_SSL }};{{ end }} + } + + {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} + + error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html; + location /400-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + + error_page 404 /404-error.html; + location /404-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + + error_page 500 501 503 504 505 506 507 508 509 510 511 /500-error.html; + location /500-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + + error_page 502 /502-error.html; + location /502-error.html { + root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; + internal; + } + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; +} +{{ else if eq $scheme "grpc"}} +{{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}} +server { + listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} http2; + listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} http2; + {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} + access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; + error_log {{ $.NGINX_ERROR_LOG_PATH }}; + location / { + grpc_pass grpc://{{ $.APP }}-{{ $upstream_port }}; + } + + {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; +} +{{ end }}{{ end }} +{{ else if eq $scheme "grpcs"}} +{{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}} +server { + listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl http2; + listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl http2; + {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} + access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; + error_log {{ $.NGINX_ERROR_LOG_PATH }}; + + ssl_certificate {{ $.APP_SSL_PATH }}/server.crt; + ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key; + ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }}; + ssl_prefer_server_ciphers off; + + location / { + grpc_pass grpc://{{ $.APP }}-{{ $upstream_port }}; + } + + {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; +} +{{ end }}{{ end }} +{{ end }} +{{ end }} + +{{ if $.DOKKU_APP_WEB_LISTENERS }} +{{ range $upstream_port := $.PROXY_UPSTREAM_PORTS | split " " }} +upstream {{ $.APP }}-{{ $upstream_port }} { +{{ range $listeners := $.DOKKU_APP_WEB_LISTENERS | split " " }} +{{ $listener_list := $listeners | split ":" }} +{{ $listener_ip := index $listener_list 0 }} + server {{ $listener_ip }}:{{ $upstream_port }};{{ end }} +} +{{ end }}{{ end }} From 734f0abe5a8da124ee4383ad2294ddb5e4d73f06 Mon Sep 17 00:00:00 2001 From: Daoud Clarke Date: Sun, 15 Oct 2023 16:47:23 +0100 Subject: [PATCH 4/5] Allow mwmbl.org --- mwmbl/settings_prod.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mwmbl/settings_prod.py b/mwmbl/settings_prod.py index 31fe52d..070bbf9 100644 --- a/mwmbl/settings_prod.py +++ b/mwmbl/settings_prod.py @@ -1,7 +1,7 @@ from mwmbl.settings_common import * DEBUG = False -ALLOWED_HOSTS = ["api.mwmbl.org", "en.mwmbl.org"] +ALLOWED_HOSTS = ["api.mwmbl.org", "mwmbl.org"] DATA_PATH = "/app/storage" RUN_BACKGROUND_PROCESSES = True From 755c1362d07ad018ed93a41bcd7dc4d8eca1b9cd Mon Sep 17 00:00:00 2001 From: Daoud Clarke Date: Tue, 17 Oct 2023 13:17:57 +0100 Subject: [PATCH 5/5] Revert nginx.conf --- nginx.conf.sigil | 105 ++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/nginx.conf.sigil b/nginx.conf.sigil index 59a40a6..4c2d502 100644 --- a/nginx.conf.sigil +++ b/nginx.conf.sigil @@ -11,64 +11,16 @@ server { {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; error_log {{ $.NGINX_ERROR_LOG_PATH }}; -{{ if (and (eq $listen_port "80") ($.SSL_INUSE)) }} + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; location / { return 301 https://$host:{{ $.PROXY_SSL_PORT }}$request_uri; } -{{ else }} - location / { - - gzip on; - gzip_min_length 1100; - gzip_buffers 4 32k; - gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/wasm application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; - gzip_vary on; - gzip_comp_level 6; - - proxy_pass http://{{ $.APP }}-{{ $upstream_port }}; - proxy_http_version 1.1; - proxy_read_timeout {{ $.PROXY_READ_TIMEOUT }}; - proxy_buffer_size {{ $.PROXY_BUFFER_SIZE }}; - proxy_buffering {{ $.PROXY_BUFFERING }}; - proxy_buffers {{ $.PROXY_BUFFERS }}; - proxy_busy_buffers_size {{ $.PROXY_BUSY_BUFFERS_SIZE }}; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $http_connection; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For {{ $.PROXY_X_FORWARDED_FOR }}; - proxy_set_header X-Forwarded-Port {{ $.PROXY_X_FORWARDED_PORT }}; - proxy_set_header X-Forwarded-Proto {{ $.PROXY_X_FORWARDED_PROTO }}; - proxy_set_header X-Request-Start $msec; - {{ if $.PROXY_X_FORWARDED_SSL }}proxy_set_header X-Forwarded-Ssl {{ $.PROXY_X_FORWARDED_SSL }};{{ end }} - } - - {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} - - error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html; - location /400-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; - } - - error_page 404 /404-error.html; - location /404-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; - } - - error_page 500 501 502 503 504 505 506 507 508 509 510 511 /500-error.html; - location /500-error.html { - root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; - internal; - } - include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; -{{ end }} } {{ else if eq $scheme "https"}} server { - listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ end }}; - listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ end }}; + listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ else if eq $.SPDY_SUPPORTED "true" }}spdy{{ end }}; + listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ else if eq $.SPDY_SUPPORTED "true" }}spdy{{ end }}; {{ if $.SSL_SERVER_NAME }}server_name {{ $.SSL_SERVER_NAME }}; {{ end }} {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} access_log {{ $.NGINX_ACCESS_LOG_PATH }}{{ if and ($.NGINX_ACCESS_LOG_FORMAT) (ne $.NGINX_ACCESS_LOG_PATH "off") }} {{ $.NGINX_ACCESS_LOG_FORMAT }}{{ end }}; @@ -80,9 +32,42 @@ server { ssl_prefer_server_ciphers off; keepalive_timeout 70; + {{ if and (eq $.SPDY_SUPPORTED "true") (ne $.HTTP2_SUPPORTED "true") }}add_header Alternate-Protocol {{ $.PROXY_SSL_PORT }}:npn-spdy/2;{{ end }} location / { + +## Start CORS here. See http://enable-cors.org/server_nginx.html for comments + + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + # + # Custom headers and headers various browsers *should* be OK with but aren't + # + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + # + # Tell client that this pre-flight info is valid for 20 days + # + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + if ($request_method = 'POST') { + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; + } + if ($request_method = 'GET') { + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; + } +### End CORS + gzip on; gzip_min_length 1100; gzip_buffers 4 32k; @@ -109,6 +94,23 @@ server { } {{ if $.CLIENT_MAX_BODY_SIZE }}client_max_body_size {{ $.CLIENT_MAX_BODY_SIZE }};{{ end }} + include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; + + ## Static file hosting + location /static/ { + alias /var/lib/dokku/data/storage/mwmbl/; + } + + ## Root and stats served statically + location = / { + root /var/lib/dokku/data/storage/mwmbl; + try_files /index.html =404; + } + + location ~ ^\/stats\/?$ { + root /var/lib/dokku/data/storage/mwmbl; + try_files /stats/index.html =404; + } error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html; location /400-error.html { @@ -133,7 +135,6 @@ server { root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors; internal; } - include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; } {{ else if eq $scheme "grpc"}} {{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}}