자스온라인
37
2020-02-05 06:51:40 작성 2020-02-05 06:54:17 수정됨
0
474

도커 docker 사용해서 SSL로 배포중 Ajax쪽에서 CORS 이슈가 발생했습니다.


원래 로컬호스트에서 개발한 프로젝트인데


서블릿정도만 사용되고 스프링프레임워크나 메이븐은 적용되지 않았습니다.


도커의 톰캣 컨테이너에서 구동되는 프로젝트입니다.


Docker에서 jwilder/nginx-proxy와 nginx-proxy-letsencrypt-companion을 통해


도메인에 대해 버추얼호스트를 잡아 구동시켰습니다.


1. 엔진엑스 프록시 컨테이너

2. 엔진엑스 렛츠인크라입트 컴페니언

3. 톰캣 컨테이너


이렇게 3단으로 서버를 구동중이고, DB는 볼륨을 잡아놓은 오라클 컨테이너에 연결시켰습니다.




도메인을 치고 들어가면 사이트는 정상적으로 접근되고, https로 적용이 완료되었는데


기존 소스들이 http 기준으로 짜여져 있다보니 https로 Ajax 요청을 해서 CORS 이슈가 발생했습니다.


해결책으로 서버에


Access-Control-Allow-Origin *   이렇게 할 경우 해결이 된다고 구글링해서 찾았는데


이걸 톰캣 컨테이너쪽에 설정을 해야 하는지


엔진엑스 프록시쪽에 설정을 해야 하는지 모르겠습니다.


nginx-proxy쪽에


/var/lib/docker/volumes/nginx_vhost/_data# 경로에(nginx-proxy쪽과 연결된 로컬 볼륨)

default(수정안함)  default_location(새로생성)


저 default_location 파일에


if ($http_origin ~* (.*\.사용도메인.com)) {

    add_header 'Access-Control-Allow-Origin' "*";

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';

    add_header 'Access-Control-Allow-Credentials' 'true';

    add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';

}

if ($request_method = OPTIONS) {

    return 204;

}


이렇게 적어줬는데도 ajax요청이 전부다 실패하고 있습니다.


혹시 해결 방향이 잘못된 것일까요?


가능하면 클라이언트단의 소스수정은 피하고 싶습니다. 팀프로젝트로 한 소스라서요.


제이쿼리 플러그인을 쓰거나, JSP 톰캣쪽의 소스를 수정하지 않고는 Https 배포가 불가능할까요?


0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.