|
74 | 74 |
|
75 | 75 | init_worker_by_lua_file /etc/nginx/lua/ngx_conf_init_worker.lua;
|
76 | 76 |
|
| 77 | + js_import njs_handle_cors from /etc/nginx/js/nginx/ngx_handle_cors.js; |
| 78 | + |
77 | 79 | {{/* Enable the real_ip module only if we use either X-Forwarded headers or Proxy Protocol. */}}
|
78 | 80 | {{/* we use the value of the real IP for the geo_ip module */}}
|
79 | 81 | {{ if or (or $cfg.UseForwardedHeaders $cfg.UseProxyProtocol) $cfg.EnableRealIP }}
|
@@ -837,33 +839,19 @@ stream {
|
837 | 839 | {{/* CORS support from https://michielkalkman.com/snippets/nginx-cors-open-configuration.html */}}
|
838 | 840 | {{ define "CORS" }}
|
839 | 841 | {{ $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 | 842 |
|
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 |
| - } |
| 843 | + set $cors_origins_regex '{{ buildCorsOriginRegex $cors.CorsAllowOrigin }}'; |
| 844 | + set $cors_allowed_origins '{{ join $cors.CorsAllowOrigin "," }}'; |
| 845 | + set $cors_allow_methods '{{ $cors.CorsAllowMethods }}'; |
| 846 | + set $cors_allow_headers '{{ $cors.CorsAllowHeaders }}'; |
| 847 | + set $cors_max_age '{{ $cors.CorsMaxAge }}'; |
| 848 | + {{ if $cors.CorsAllowCredentials }} set $cors_allow_credentials {{ $cors.CorsAllowCredentials }}; {{ end }} |
| 849 | + {{ if not (empty $cors.CorsExposeHeaders) }} set $cors_expose_headers '{{ $cors.CorsExposeHeaders }}'; {{ end }} |
| 850 | + |
| 851 | + js_header_filter njs_handle_cors.handle_cors; |
856 | 852 |
|
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; |
| 853 | + if ($request_method = 'OPTIONS') { |
| 854 | + return 204; |
867 | 855 | }
|
868 | 856 | {{ end }}
|
869 | 857 |
|
|
0 commit comments