관련지식
nginx, COR, cross-origin

nginx를 사용하는 다른 도메인으로 AJAX 통신을 호출했을때 서버 로직은 정상적으로 실행되지만 response를 정상적으로 못받는 경우가 있습니다.

크로스 도메인 정책에 의해 차단된 것으로 nginx 에서 COR을 허용하면 해결됩니다.

  1. add_header 'Access-Control-Allow-Origin' '*';
  2. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  3. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
  4. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';

위의 방식은 https://enable-cors.org/server_nginx.html 에서 가이드 하는 방법이지만 모두 사용할 필요는 없고 Access-Control-Allow-Origin 만 추가하면 COR은 활성화 됩니다.
나머지 값은 세세한 설정을 위한 것이므로 필요할때만 추가하셔도 됩니다.

만약 URL ‘/extern/callback’ 에 대해서만 크로스 도메인을 적용하고 싶을 경우 nginx 에 아래와 같이 설정 할 수 있습니다.

  1. location / {
  2. if ($uri = '/extern/callback') {
  3. add_header 'Access-Control-Allow-Origin' '*';
  4. }
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
  7. proxy_set_header Host $http_host;
  8. proxy_set_header X-NginX-Proxy true;
  9. ...
  10. }