외부 API 서버에서 스크립트를 받아와서 페이지에 뿌려주는게 있는데
크로스도메인 문제 때문에 502에러가 뜹니다.
백단은 php나 아파치 없이 온리 nginx로만 처리하고 jsonp를 별도 API서버에서 받아오는 형식으로 되었습니다.
그래서 nginx 단에서 CORS 처리를 해주는데
내부에서 ssl 인증을 위한 reverse proxy pass가 있기 때문에 고려해서 설정 해주었읍니다.
설정은 다음과 같습니다. 내부 location 루트에 대한 세팅값입니다.
set $cors '';
if ($http_origin ~* (https?://.*\.api\.server?(:[0-9]+)?$|https?://.*\.api2\.server?(:[0-9]+)?$)) {
set $cors 'on';
}
if ($request_method = OPTIONS) {
set $cors "${cors}_options";
}
if ($cors = 'on_options') {
add_header 'Content-Length' 0;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
return 204;
}
if ($cors = 'on') {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
}
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
proxy_intercept_errors on;
proxy_http_version 1.1;
이상으로 세팅하고 테스트를 돌려보니 에러가 없어지긴했는데
가끔 페이지 리프레시 이후 502가 뜨다가 다시 api값을 받아오는 현상이 나타납니다.
아무리 삽질을 해봐도 모르겠는데 프갤에 아시는 분 계십니까
502면 백단 문제일듯한데 nginx설정 그만파고 jsonp보내주는 서버를 파보심이
그냥 502가 나는거면 모르겠는데, 브라우저에서 보안문제때문에 외부서버에서 받아오는 api 데이터를 안된다고 502 처리를 해버리니...
그리고 아에 데이터값을 못받아오는 것도 아니라서 진짜 애매함미다 하..
그럴일은 거의 없겠지만 커넥션 갯수랑 버퍼 크기 같은것도 점검해보세영. response 프록시 버퍼가 너무 낮게 설정되있어도 502떨어짐
https://forum.nginx.org/read.php?2,44091
네 일단 전반적으로 검사해봐야죠 쩝..
중국에서 고생 그만하고 한국도 좀 오시구
아, 프록시 업스트림 커넥션 갯수도 한번 점검해봐야할듯하네요