알아봅시다 [Apache] Reverse Proxy 사용하기
2019.12.23 21:39
만약 REST API WAS 서버를 구축하여 API를 open하게 될 때, 해당 WAS 서버에 대한 직접적인 접근을 허용하기에는 보안상 문제가 될 수 있습니다. 따라서 보통 REST API WAS 서버는 내부망에 위치하게 하고, Reverse Proxy 서버가 Client에서 요청한 REST API Request에 대해 대신 Response를 하게 됩니다.
Proxy는 Forward/Reverse Proxy 두가지가 있는데, 보통 Forward Proxy는 사내망 Client에서 외부에 있는 웹서버를 접근할 때 사용되며(미리 Proxy 지정이 필요함), Reverse Proxy는 Client에서 웹서버에 접근 할 때, 내부망에 위치한 WAS서버를 대신하여 요청한 Request에 대해 Response를 하는 구조입니다. 따라서 내부망에 있는 WAS서버와 분리가 되어 있기 때문에, 보안상 더 안전하게 됩니다.
또한 REST API WAS 서버를 운영할 때, REST API 버전별로 다른 주소로 redirecting을 할 수 있기 때문에, 관리적인 측면에서도 유용합니다.
다음과 같이 Reverse Proxy와 REST API WAS 서버가 있다고 가정하였을 때, REST API 버전을 업데이트 하여 주소가 변경될 때, 사용자 입장에서는 동일한 주소로 REST API를 사용할 수 있습니다.
- Reverse Proxy Server: http://honeybeee.io/users/_search
- 내부 REST API v1.0 WAS서버: http://api.honeybeee.com/src/honeybeee/api/v1.0/users/_search
- 내부 REST API v2.0 WAS서버: http://api.honeybeee.com/src/honeybeee/api/v2.0/users/_search
만약 REST API 버전이 v2.0으로 변경 되었다면, 단순히 Reverse Proxy에서 .../v2.0으로 redirecting만 지정하면 됩니다. 사용자 입장에서는 여전히 http://honeybeee.io/users/_search 동일한 URL로 접근하면 됩니다.
* 참고: https://www.lesstif.com/pages/viewpage.action?pageId=21430345
* 참고: http://idess.tistory.com/6
* 참고: http://bcho.tistory.com/954
Apache에서도 Reverse Proxy기능을 지원하는데, 설정하는 방법에 대해 알아 보겠습니다.
현재 두 개의 물리적인 서버가 존재한다고 가정합니다.
<Reverse Proxy Apache 서버>
- DNS: honeybeee.io
- Port: 80 (Default Port)
<REST API WAS서버>
- DNS: api.honeybeee.com
- Port: 8100
1. Reverse Proxy Apache 서버에서 httpd.conf파일에 Proxy 모듈 사용 선언
Apache 서버에서 Proxy 기능을 사용하기 위해 아래의 모듈을 지정합니다.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2. Reverse Proxy Apache 서버에서 LISTEN 포트 확인하기
Reverse Proxy Apache 서버내의 httpd.conf파일에 위에서 가정한 80포트를 Listen 하는지 확인합니다. 만약 다른 포트로 지정하고자 한다면, 꼭 Listen을 지정해야 합니다.
ex) 8080사용
httpd.conf
...
Listen 8080
...
3. Reverse Proxy 선언
Reverse Proxy Apache 서버에서 httpd-vhosts.conf파일을 열은 후, 아래와 같이 가상호스트를 지정합니다. 아래의 의미는 해당 Reverse Proxy 서버의 주소 및 80포트로 접근시, REST API 서버의 특정 주소로 Client 요청을 넘긴 후, 결과값에 대해 Client에 다시 Response합니다.
<VirtualHost *:80>
ProxyPass / http://api.honeybeee.com:8100/src/honeybeee/api/v1.0/
ProxyPassReverse / http://api.honeybeee.com:8100/src/honeybeee/api/v1.0/
</VirtualHost>
만약 아래와 같이 /test URL 요청에 대해 ReverseProxy가 동작하길 원한다면 아래와 같이 수정하면 됩니다.
http://honeybeee.io/test/users/_search
<VirtualHost *:80>
ProxyPass /test http://api.honeybeee.com:8100/src/honeybeee/api/v1.0/
ProxyPassReverse /test http://api.honeybeee.com:8100/src/honeybeee/api/v1.0/
</VirtualHost>
4. Apache 서버를 재시작
서버 재시작 후, 다음과 같이 Client 웹브라우저에서 URL로 접근시, 마치 내부서버에 URL로 접속한 것처럼, Reverse Proxy가 동작하여 사용자에게 원하는 결과를 Response하게 됩니다.
ex) Client Web Browser => http://honeybeee.io/users/_search
Reverse Proxy => http://api.honeybeee.com:8100/src/honeybeee/api/v1.0/users/_search
출처: https://arclab.tistory.com/103 [Arc Lab.'s Blog]
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 17 |
[알아봅시다] 원자로의 미래는 작을 수 있다”...전 세계가 뛰어든 SMR은 무엇
| 졸리운_곰 | 2023.01.22 | 247 |
| 16 |
[알아봅시다][물리학][시공간] [사이언스N사피엔스]시간과 공간이 아닌 시공간
| 졸리운_곰 | 2021.04.01 | 212 |
| 15 |
"우주 나이는 137억7천만년±4천만년"…허블상수 논쟁 해결 난망
| 졸리운_곰 | 2020.07.17 | 253 |
| 14 |
태양 표면 작은 폭발까지 드러낸 최근접 태양 이미지들
| 졸리운_곰 | 2020.07.17 | 302 |
| 13 |
[사이언스&사피엔스] 전자기학의 완성
| 졸리운_곰 | 2020.07.12 | 340 |
| 12 |
우주 생명체 '씨앗' 탄소 뿌리고 스러지는 백색왜성
| 졸리운_곰 | 2020.07.09 | 285 |
| 11 |
태양계 무게중심 100m 이내로 오차 줄여 블랙홀 연구 도약
| 졸리운_곰 | 2020.07.08 | 200 |
| 10 |
[잠깐과학]'우주배경복사' 발견하다
| 졸리운_곰 | 2020.07.06 | 300 |
| 9 |
초소형 블랙홀인가 초대형 중성자별인가...중력파로 발견한 미지의 천체
| 졸리운_곰 | 2020.06.30 | 183 |
| 8 |
[사이언스N사피엔스] 열역학과 엔트로피
| 졸리운_곰 | 2020.06.28 | 402 |
| 7 |
목성 위성 유로파 얼음층 밑 대양 "생명체가 꽤 서식할만한 곳"
| 졸리운_곰 | 2020.06.27 | 182 |
| 6 |
'무거운 중성자별일까 가벼운 블랙홀일까' 중력파로 미지의 천체 찾았다
| 졸리운_곰 | 2020.06.27 | 234 |
| 5 |
'1조분의 1초'만에 원자가 분자로 바뀌는 전 과정 세계 최초 포착
| 졸리운_곰 | 2020.06.27 | 346 |
| 4 |
[프리미엄리포트] ‘핵’ 빠르게 던지는 가속기
| 졸리운_곰 | 2020.06.27 | 173 |
| 3 |
"우주는 훌륭한 양자역학실험실…ISS서 BEC실험 첫 성공"
| 졸리운_곰 | 2020.06.15 | 172 |
| 2 |
우주 미스터리 풀어줄 157일 주기 '빠른 전파 폭발' 확인
| 졸리운_곰 | 2020.06.14 | 246 |
| 1 | 알파 센타우리 | 졸리운_곰 | 2019.01.23 | 511 |


Hello,
Can you hide the URL in the previous post ?
Yes it's work, I can connect to Traccar.
But now, after connection I have this error : Web socket connection error
And many errors about API in the developper console :
Errors developper console
I have change the config like this :
ProxyPass /traccar/api/socket/ ws://192.168.1.103:8082/api/socket/
ProxyPassReverse /traccar/api/socket/ ws:///192.168.1.103:8082/api/socket/
ProxyPass /traccar/ http://192.168.1.103:8082/
ProxyPassReverse /traccar/ http://192.168.1.103:8082/
But no work...
I have also test with one virtual machine with Traccar + Apache2 : it's the same, no work and same errors...
Thank you
Adrien