|
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 }}
|
@@ -837,33 +841,19 @@ stream {
|
837 | 841 | {{/* CORS support from https://michielkalkman.com/snippets/nginx-cors-open-configuration.html */}}
|
838 | 842 | {{ define "CORS" }}
|
839 | 843 | {{ $cors := .CorsConfig }}
|
840 |
| - # Cors Preflight methods needs additional options and different Return Code |
841 |
| - {{ if $cors.CorsAllowOrigin }} |
842 |
| - {{ buildCorsOriginRegex $cors.CorsAllowOrigin }} |
843 |
| - {{ end }} |
844 |
| - if ($request_method = 'OPTIONS') { |
845 |
| - set $cors ${cors}options; |
846 |
| - } |
847 | 844 |
|
848 |
| - if ($cors = "true") { |
849 |
| - more_set_headers 'Access-Control-Allow-Origin: $http_origin'; |
850 |
| - {{ if $cors.CorsAllowCredentials }} more_set_headers 'Access-Control-Allow-Credentials: {{ $cors.CorsAllowCredentials }}'; {{ end }} |
851 |
| - more_set_headers 'Access-Control-Allow-Methods: {{ $cors.CorsAllowMethods }}'; |
852 |
| - more_set_headers 'Access-Control-Allow-Headers: {{ $cors.CorsAllowHeaders }}'; |
853 |
| - {{ if not (empty $cors.CorsExposeHeaders) }} more_set_headers 'Access-Control-Expose-Headers: {{ $cors.CorsExposeHeaders }}'; {{ end }} |
854 |
| - more_set_headers 'Access-Control-Max-Age: {{ $cors.CorsMaxAge }}'; |
855 |
| - } |
| 845 | + set $cors_origins_regex '{{ buildCorsOriginRegex $cors.CorsAllowOrigin }}'; |
| 846 | + set $cors_allowed_origins '{{ join $cors.CorsAllowOrigin "," }}'; |
| 847 | + set $cors_allow_methods '{{ $cors.CorsAllowMethods }}'; |
| 848 | + set $cors_allow_headers '{{ $cors.CorsAllowHeaders }}'; |
| 849 | + set $cors_max_age '{{ $cors.CorsMaxAge }}'; |
| 850 | + {{ if $cors.CorsAllowCredentials }} set $cors_allow_credentials {{ $cors.CorsAllowCredentials }}; {{ end }} |
| 851 | + {{ if not (empty $cors.CorsExposeHeaders) }} set $cors_expose_headers '{{ $cors.CorsExposeHeaders }}'; {{ end }} |
| 852 | + |
| 853 | + js_header_filter njs_handle_cors.handle_cors; |
856 | 854 |
|
857 |
| - if ($cors = "trueoptions") { |
858 |
| - more_set_headers 'Access-Control-Allow-Origin: $http_origin'; |
859 |
| - {{ if $cors.CorsAllowCredentials }} more_set_headers 'Access-Control-Allow-Credentials: {{ $cors.CorsAllowCredentials }}'; {{ end }} |
860 |
| - more_set_headers 'Access-Control-Allow-Methods: {{ $cors.CorsAllowMethods }}'; |
861 |
| - more_set_headers 'Access-Control-Allow-Headers: {{ $cors.CorsAllowHeaders }}'; |
862 |
| - {{ if not (empty $cors.CorsExposeHeaders) }} more_set_headers 'Access-Control-Expose-Headers: {{ $cors.CorsExposeHeaders }}'; {{ end }} |
863 |
| - more_set_headers 'Access-Control-Max-Age: {{ $cors.CorsMaxAge }}'; |
864 |
| - more_set_headers 'Content-Type: text/plain charset=UTF-8'; |
865 |
| - more_set_headers 'Content-Length: 0'; |
866 |
| - return 204; |
| 855 | + if ($request_method = 'OPTIONS') { |
| 856 | + return 204; |
867 | 857 | }
|
868 | 858 | {{ end }}
|
869 | 859 |
|
|
0 commit comments