|
12 | 12 | # setup custom paths that do not require root access |
13 | 13 | pid {{ .PID }}; |
14 | 14 |
|
| 15 | +load_module 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