|
12 | 12 | # setup custom paths that do not require root access
|
13 | 13 | pid {{ .PID }};
|
14 | 14 |
|
| 15 | +load_module /etc/nginx/modules/ngx_http_js_module.so; |
| 16 | + |
15 | 17 | {{ if $cfg.UseGeoIP2 }}
|
16 | 18 | load_module /etc/nginx/modules/ngx_http_geoip2_module.so;
|
17 | 19 | {{ end }}
|
|
74 | 76 |
|
75 | 77 | init_worker_by_lua_file /etc/nginx/lua/ngx_conf_init_worker.lua;
|
76 | 78 |
|
| 79 | + js_import njs_handle_cors from /etc/nginx/js/nginx/ngx_handle_cors.js; |
| 80 | + |
77 | 81 | {{/* Enable the real_ip module only if we use either X-Forwarded headers or Proxy Protocol. */}}
|
78 | 82 | {{/* we use the value of the real IP for the geo_ip module */}}
|
79 | 83 | {{ if or (or $cfg.UseForwardedHeaders $cfg.UseProxyProtocol) $cfg.EnableRealIP }}
|
@@ -872,33 +876,19 @@ stream {
|
872 | 876 | {{/* CORS support from https://michielkalkman.com/snippets/nginx-cors-open-configuration.html */}}
|
873 | 877 | {{ define "CORS" }}
|
874 | 878 | {{ $cors := .CorsConfig }}
|
875 |
| - # Cors Preflight methods needs additional options and different Return Code |
876 |
| - {{ if $cors.CorsAllowOrigin }} |
877 |
| - {{ buildCorsOriginRegex $cors.CorsAllowOrigin }} |
878 |
| - {{ end }} |
879 |
| - if ($request_method = 'OPTIONS') { |
880 |
| - set $cors ${cors}options; |
881 |
| - } |
882 | 879 |
|
883 |
| - if ($cors = "true") { |
884 |
| - more_set_headers 'Access-Control-Allow-Origin: $http_origin'; |
885 |
| - {{ if $cors.CorsAllowCredentials }} more_set_headers 'Access-Control-Allow-Credentials: {{ $cors.CorsAllowCredentials }}'; {{ end }} |
886 |
| - more_set_headers 'Access-Control-Allow-Methods: {{ $cors.CorsAllowMethods }}'; |
887 |
| - more_set_headers 'Access-Control-Allow-Headers: {{ $cors.CorsAllowHeaders }}'; |
888 |
| - {{ if not (empty $cors.CorsExposeHeaders) }} more_set_headers 'Access-Control-Expose-Headers: {{ $cors.CorsExposeHeaders }}'; {{ end }} |
889 |
| - more_set_headers 'Access-Control-Max-Age: {{ $cors.CorsMaxAge }}'; |
890 |
| - } |
| 880 | + set $cors_origins_regex '{{ buildCorsOriginRegex $cors.CorsAllowOrigin }}'; |
| 881 | + set $cors_allowed_origins '{{ join $cors.CorsAllowOrigin "," }}'; |
| 882 | + set $cors_allow_methods '{{ $cors.CorsAllowMethods }}'; |
| 883 | + set $cors_allow_headers '{{ $cors.CorsAllowHeaders }}'; |
| 884 | + set $cors_max_age '{{ $cors.CorsMaxAge }}'; |
| 885 | + {{ if $cors.CorsAllowCredentials }} set $cors_allow_credentials {{ $cors.CorsAllowCredentials }}; {{ end }} |
| 886 | + {{ if not (empty $cors.CorsExposeHeaders) }} set $cors_expose_headers '{{ $cors.CorsExposeHeaders }}'; {{ end }} |
| 887 | + |
| 888 | + js_header_filter njs_handle_cors.handle_cors; |
891 | 889 |
|
892 |
| - if ($cors = "trueoptions") { |
893 |
| - more_set_headers 'Access-Control-Allow-Origin: $http_origin'; |
894 |
| - {{ if $cors.CorsAllowCredentials }} more_set_headers 'Access-Control-Allow-Credentials: {{ $cors.CorsAllowCredentials }}'; {{ end }} |
895 |
| - more_set_headers 'Access-Control-Allow-Methods: {{ $cors.CorsAllowMethods }}'; |
896 |
| - more_set_headers 'Access-Control-Allow-Headers: {{ $cors.CorsAllowHeaders }}'; |
897 |
| - {{ if not (empty $cors.CorsExposeHeaders) }} more_set_headers 'Access-Control-Expose-Headers: {{ $cors.CorsExposeHeaders }}'; {{ end }} |
898 |
| - more_set_headers 'Access-Control-Max-Age: {{ $cors.CorsMaxAge }}'; |
899 |
| - more_set_headers 'Content-Type: text/plain charset=UTF-8'; |
900 |
| - more_set_headers 'Content-Length: 0'; |
901 |
| - return 204; |
| 890 | + if ($request_method = 'OPTIONS') { |
| 891 | + return 204; |
902 | 892 | }
|
903 | 893 | {{ end }}
|
904 | 894 |
|
|
0 commit comments