CORS NGINX 구성 문제

CORS NGINX 구성 문제

NGINX가 설치된 Ubuntu 웹 서버가 있습니다. 다음 WebDAV 메서드에 대한 CORS 지원 을 추가하고 싶습니다: PUT, GET, OPTIONS, MKCOL. PROPFINDCORS 지원을 추가하고 다음 줄을 추가하는 방법에 대한 여러 기사를 읽었습니다 /etc/nginx/sites-enabled/default.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
#       return         301 https://$server_name$request_uri;


        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location /test {
                add_header "Access-Control-Allow-Origin"  *;
                add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS, PUT, DELETE, MKCOL, PROPFIND';
                add_header  "Access-Control-Allow-Credentials" "true";
                add_header  "Access-Control-Allow-Headers" "Authorization, origin, accept";
                add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
                dav_methods  PUT DELETE MKCOL;
                dav_ext_methods   PROPFIND OPTIONS;
                autoindex     on;
                create_full_put_path on;
                limit_except  GET HEAD {
                allow XXX.XXX.XXX.XXX/32;
                deny  all;
                }
       }
}

그러나 nginx 서버를 다시 시작한 후에도 클라이언트는 CORS가 활성화되지 않았다고 불평합니다. 오류 메시지가 나타납니다 "No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'XXXX.com' is therefore not allowed access. The response had HTTP status code 404.". 흥미롭게도 파일이 있을 때는 파일이 없을 때만 그런 오류가 나지 않지만, 반면에 파일이 없을 때는 다른 서버에서도 똑같이 테스트했고 이 서버에서는 오류만 발생했습니다 HTTP status code 404.

내 nginx 버전과 설치된 모듈은 다음과 같습니다.

$ nginx -V
nginx version: nginx/1.10.3 (Ubuntu)
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=/build/nginx-Q158zN/nginx-1.10.3/debian/modules/nginx-auth-pam --add-module=/build/nginx-Q158zN/nginx-1.10.3/debian/modules/nginx-dav-ext-module --add-module=/build/nginx-Q158zN/nginx-1.10.3/debian/modules/nginx-echo --add-module=/build/nginx-Q158zN/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-module=/build/nginx-Q158zN/nginx-1.10.3/debian/modules/ngx_http_substitutions_filter_module 

[편집하다]

이것은 컬의 출력입니다.

$ curl --head http://ip_address/test:
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Tue, 10 Oct 2017 10:02:23 GMT
Content-Type: text/html
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS, PUT, DELETE, MKCOL, PROPFIND
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization, origin, accept
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range

모든 것이 괜찮아 보이지만 개발자 콘솔에서는 여전히 이 오류가 발생합니다.

관련 정보