안녕하세요. 고객사와 함께 성장하는 비즈니스 파트너 링크허브 입니다.
Google App Engine을 사용하여 팝빌 SDK를 이용하는 경우, “Token’s ipaddress is mismatch.” 오류가 발생할 수 있습니다. 오류 원인은 팝빌 서비스를 이용하기 위해 링크허브 인증서버로부터 토큰을 발급받은 서버IP와 팝빌 API 기능을 호출하는 서버IP가 다르게 호출되는 App Engine의 서비스 구조가 원인입니다. 이를 해결하기 위해서 App Engine을 위한 Proxy 서버를 Google Compute Engine으로 구성하는 방법에 대해 안내드리도록 하겠습니다.
(본 가이드는 GCE Nginx Proxy 환경구성 예시를 위한 문서입니다. 서버 Configuration 및 Google Cloud Platform 서비스 구성은 연동하는 환경에 따라 다르게 구성할 수 있습니다.)
GCE Proxy Server 구성을 위한 절차는 다음과 같습니다.
- STEP 1. Compute Engine 환경구성
- STEP 2. Google Cloud Platform 방화벽 설정
- STEP 3. 팝빌 SDK Target URL 수정
- STEP 4. 호출결과 확인
STEP 1. Compute Engine 생성
1) Cloud Platform Console 페이지에서 “centos”를 검색하고 CentOS 7 버전을 선택합니다.
– Zone은 도쿄 리즌을 사용하기 위해 “asia-northeast1” 을 선택하고 Machine type은 최소사양으로 선택합니다. 마지막으로 방화벽 관련 설정으로 Allow HTTPS traffic 을 체크해줍니다. (팝빌의 모든 서비스는 TLS 프로토콜 통신을 사용하기 때문에 https traffic을 허용해주어야 합니다.
2) yum을 이용하여 nginx를 설치해줍니다.
1 |
sudo yum install nginx |
3) 생성한 GCE VM에 Nginx Configuration 파일을 생성해줍니다.
4) nginx 설정파일에 아래의 내용을 작성하고 nginx 서비스를 재시작 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
server { listen 9091; location / { proxy_set_header Host 'auth.linkhub.co.kr'; proxy_set_header User-Agent 'LINKHUB-NGINX-PROXY'; proxy_pass https://auth.linkhub.co.kr; proxy_http_version 1.1; proxy_read_timeout 10s; proxy_connect_timeout 10s; proxy_ssl_protocols TLSv1; } } server { listen 9092; location / { proxy_set_header Host 'popbill_test.linkhub.co.kr'; proxy_set_header User-Agent 'LINKHUB-NGINX-PROXY'; proxy_pass https://popbill_test.linkhub.co.kr; proxy_http_version 1.1; proxy_read_timeout 10s; proxy_connect_timeout 10s; proxy_ssl_protocols TLSv1; } } server { listen 9093; location / { proxy_set_header Host 'popbill.linkhub.co.kr'; proxy_set_header User-Agent 'LINKHUB-NGINX-PROXY'; proxy_pass https://popbill.linkhub.co.kr; proxy_http_version 1.1; proxy_read_timeout 10s; proxy_connect_timeout 10s; proxy_ssl_protocols TLSv1; } } |
4) Nginx 에서 사용할 Port를 허용해주기 위해 selinux http_port_t (9091, 9092, 9093)를 추가하고 확인합니다.
5) Nginx 서비스를 구동하고 정상적으로 서비스가 시작되었는지 로그를 확인합니다.
STEP 2. Google Cloud Platform 방화벽 설정
1) 추가한 포트에 대한 방화벽 설정을 위해 방화벽 규칙을 생성하고 tcp 9091, 9092, 9093 포트를 허용해줍니다.
2) 허용된 포트가 정상적으로 적용되었는지 테스트를 위해 브라우저에서 “External IP:9091/Time” 을 호출하여 화면에 시간이 출력되는지 확인합니다. 정상적으로 시간이 출력되지 않는다면, 위의 과정들 중에 오타가 있는지 혹은 nginx 서비스를 재시작 했는지 다시한번 확인해 보시기 바랍니다.
STEP 3. 팝빌 PHP SDK Target URL 수정
1) 팝빌 API SDK 기능을 호출할 때 Compute Engine으로 생성했던 Nginx Proxy 서버를 통해 요청이 이뤄지도록 SDK의 2개파일(linkhub.auth.php, popbill.php) 파일에 작성된 target URL 코드를 아래와 같이 변경해줍니다. GCE ExternalIP:포트 (포트는 반드시 아래 예시와 같이 작성해야 합니다, GCE External IP 주소는 생성후 할당된 주소를 기재하시면 됩니다.)
/Popbill/Linkhub/linkhub.auth.php 파일에 선언된 ServiceURL을 ExternalIP:9091로 수정합니다.
../Popbill/popbill.php 파일에 선언된 ServiceURL_REAL을 ExternalIP:9093, ServiceURL_TEST를 ExternalIP:9092 으로 각각 수정합니다. (9092, 9093 포트번호를 각각 정확히 기재하셔야 합니다.)
2) SDK TargetURL을 수정한 코드를 배포합니다.
STEP 4. 호출결과 확인
Google App Engine에 배포한 서비스를 통해 팝빌 API 호출이 정상적으로 동작하는지 확인합니다.
- 예제에서 사용된 External IP는 고정IP가 아니므로 GCE 서비스 재시작시 변경될 수 있습니다. 구성환경에 따라 고정 IP 또는 도메인을 설정하여 Nginx Proxy 서버 환경을 구성하시기 바랍니다.
[참고] Nginx server_name configuration documentation [바로가기]
고객님들의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 연락주시기 바랍니다.
링크허브 개발팀 정요한 과장 / T. 1600-9854 / D. 070-4304-2991 / E. code@linkhub.co.kr