역방향 프록시 서버는 경계 네트워크(비무장지대 또는 스크린된 서브넷이라고도 함) 내에서 배포되는 컴퓨터로, 인터넷에서 요청을 처리하고 이를 내부 네트워크에 있는 머신으로 전달합니다. 요청을 전달함으로써 역방향 프록시 서버는 기관의 방화벽이 설정된 머신의 ID를 마스크하므로 인터넷 사용자의 직접 공격으로부터 내부 머신을 보호합니다. 추가 보안 기능이 역방향 프록시 서버에서 구현되어 외부 사용자로부터 내부 네트워크를 추가로 보호할 수 있습니다.
기관의 역방향 프록시 서버를 사용하도록 ArcGIS Notebook Server 사이트를 구성할 수 있습니다. 이 설정은 선택 사항입니다. 기관에서 역방향 프록시를 사용하지 않거나 이를 사용하도록 ArcGIS Notebook Server 사이트를 구성하지 않으려는 경우 포털을 사용하여 사이트 구성을 진행할 수 있습니다.
역방향 프록시 서버에 ArcGIS Notebook Server 추가
프록시 지시문에 해당 URL을 추가하여 ArcGIS Web Adaptor와 통신하도록 기관의 역방향 프록시 서버를 구성해야 합니다.
예를 들어 Apache를 역방향 프록시 서버로 사용하는 경우 다음과 같이 httpd.conf Apache 웹서버 구성 파일의 ProxyPass 지시문에 ArcGIS Web Adaptor URL을 추가해야 합니다.
ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook
대부분의 역방향 프록시 서버에는 구성 가능한 클라이언트 연결 시간 제한이 있습니다. ArcGIS Notebook Server가 Python 커널과 통신하는 데 사용하는 websocket 연결은 연결 시간 제한에 도달하면 오프라인 상태가 되고 Notebook에 알림이 표시됩니다. 이러한 상황이 일정한 간격(예시: 커널에 다시 연결한 후 1, 3, 5분마다)으로 발생하는 경우 네트워크 경로에 대한 연결 시간 제한을 조사한 후 이에 맞게 늘려야 합니다.
WebContextURL 속성 설정
역방향 프록시 서버를 사용 중이고 사이트 URL이 기본 문자열 /arcgis(모두 소문자)로 끝나지 않는 경우 ArcGIS Notebook Server WebContextURL 등록정보도 설정해야 합니다. 이렇게 하면 ArcGIS Notebook Server가 최종 사용자에게 보내는 리소스에서 올바른 URL을 구성할 수 있습니다.
비고:
WebContextURL 등록정보를 사용하여 ArcGIS Web Adaptor의 ArcGIS Notebook Server URL(예시: /notebook)과 일치하도록 설정합니다.
- https://notebookserver.domain.com:11443/arcgis/admin에서 관리자 권한이 있는 사용자로 ArcGIS Notebook Server 관리자 디렉터리에 로그인합니다.
- 시스템 > 등록정보 > 업데이트를 클릭합니다.
- 등록정보 텍스트 상자에 기관의 방화벽 외부에 있는 사용자에게 표시되는 고유 ArcGIS Notebook Server URL로 대체되는 다음 JSON을 삽입합니다.
{ "WebContextURL": "https://notebookserver.domain.com/notebook" }
- 업데이트를 클릭합니다.
- ArcGIS Notebook Server를 다시 시작합니다. Linux에서는 설치 폴더에 있는 stopnotebookserver.sh 및 startnotebookserver.sh 스크립트를 실행합니다.
역방향 프록시 헤더 및 ArcGIS Notebook Server
역방향 프록시를 ArcGIS Web Adaptor와 통합할 때 역방향 프록시 서버에서 보낸 헤더에 다음 등록정보를 설정해야 합니다.
X-Forwarded-Host=<FQDN of reverse proxy server>
이 등록정보가 헤더에 설정되어 있으면ArcGIS Web Adaptor는 역방향 프록시 서버의 URL과 일치하는 역방향 프록시 서버에 요청을 반환합니다. 예를 들어 ArcGIS Notebook Server 서비스 디렉터리(https://reverseproxy.domain.com/arcgis/rest/services)에 대한 요청은 동일한 URL로 클라이언트에 반환됩니다.
X-Forwarded-Host 머리글 등록정보가 설정되지 않은 경우 ArcGIS Web Adaptor는 요청이 전달되는 내부 머신의 URL을 반환할 수도 있습니다(예시: https://reverseproxy.domain.com/arcgis/rest/services 대신 https://notebookserver.domain.com/arcgis/rest/services). 클라이언트가 이 URL에 접근할 수 없을 때는 문제가 발생합니다(일반적으로 브라우저 404 오류라고 함). 또한 클라이언트가 내부 머신에 대한 지식을 일부 얻게 됩니다.
클라이언트 및 ArcGIS Web Adaptor와의 통신 문제를 해결할 때 역방향 프록시 서버에서 X-Forwarded-Host 머리글 등록정보를 설정하는 것을 권장합니다. 이는 통신 결함의 일반적인 원인이기 때문입니다. 이 헤더를 설정하는 방법은 역방향 프록시 서버 구현에 따라 다릅니다.
기존 호스트 헤더를 전달하는 방법에 대한 지침은 역방향 프록시 서버에 대한 제품 설명서를 참고하세요.
고가용성 ArcGIS Notebook Server 사이트에 대한 역방향 프록시 서버 구성
단일 ArcGIS Notebook Server 사이트에 등록된 ArcGIS Web Adaptor를 실행하는 여러 백엔드 대상이 있는 역방향 프록시 서버를 구현할 때는 고려해야 할 추가 검토 사항이 있습니다.
ArcGIS Notebook Server는 websocket 연결을 사용하여 Python 커널과 통신합니다. 이러한 websocket 연결은 역방향 프록시 구성에서 유지관리해야 하는 상태 저장 세션을 생성합니다. 이를 세션 고착도라고 하며, 이를 달성하려면 레이어 7(응용프로그램) 로드 밸런서가 필요합니다.
다음을 사용하여 Apache에서 올바른 세션 고착도를 달성할 수 있습니다.Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://web_adaptors_https>
BalancerMember https://notebook1.domain.com:443 route=notebook1
BalancerMember https://notebook2.domain.com:443 route=notebook2
BalancerMember https://notebook3.domain.com:443 route=notebook3
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
동일한 백엔드 대상에 대한 보안 websocket(WSS) 연결을 프록시하는 것도 중요합니다.<Proxy balancer://web_adaptors_wss>
BalancerMember wss://notebook1.domain.com:443 route=notebook1
BalancerMember wss://notebook2.domain.com:443 route=notebook2
BalancerMember wss://notebook3.domain.com:443 route=notebook3
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
예시: ArcGIS Notebook Server로 Apache 및 Tomcat 구성
웹서버 소프트웨어를 사용하는 ArcGIS Notebook Server로 역방향 프록시를 구성할 수 있습니다. 다음 샘플 워크플로에서는 Apache HTTP Server 및 Apache Tomcat를 사용하여 역방향 프록시를 설정하는 단계를 설명합니다. 이것은 최종 지침이 아닌 역방향 프록시 구성의 한 예시입니다.
이 샘플 워크플로는 다음과 같은 소프트웨어 및 버전을 사용하며, 모두 ArcGIS Notebook Server과 동일한 머신에 설치됩니다.
- Red Hat Enterprise Linux Server 7.5
- Apache HTTP Server, httpd 2.4.6
- Apache Tomcat 9.0.20/OpenJDK 1.8.0
이러한 소프트웨어 구성 요소는, ArcGIS Notebook ServerApache HTTP Server 및 Apache Tomcat 모두가 별도의 머신에 있는 분산 아키텍처에 있을 수도 있습니다.
다음 단계는 ArcGIS Notebook Server 및 Mirantis Container Runtime 이후에 시작되어 설치 및 구성되었으며 ArcGIS Web Adaptor의 인스턴스가 Java 웹서버에 설치되었지만 구성되지 않았습니다.
- 기본 설정에 따라 활성화되어 있는 AJP(Apache JServ Protocol)를 사용하여 포트 8080에서 Tomcat이 실행되도록 설치합니다.
- Tomcat에서는 포트 8443이 기본 설정에 따라 활성화되어 있지 않으므로 SSL을 활성화하고 포트 8443에 대한 커넥터를 추가합니다.
여기에는 SSL 인증서를 생성하고 Tomcat 구성 파일을 편집하여 커넥터를 추가하는 작업이 포함됩니다. 보안 모범 사례로, TLS 버전 1.2만 활성화해야 합니다.
... sslProtocol="TLS" SSLProtocol="TLSv1.2" ...
- 기존 ArcGIS Web Adaptor (Java Platform)에 대한 arcgis.war 파일을 Tomcat에 배포합니다.
예를 들어 ArcGIS Web Adaptor URL은 /nbs입니다.
- Apache HTTP Server를 설치합니다.
예를 들어 yum 패키지 관리자가 사용됩니다. SSL 기능도 yum을 사용하여 설치됩니다.
yum install httpd -y yum install mod_ssl -y
- ssl.conf 파일의 Apache HTTP Server에 대한 SSL 인증서를 구성합니다.
- 프록시 규칙을 사용하여(이전 섹션에서 설명한 대로) Apache httpd.conf 파일을 수정하여 Tomcat의 AJP 포트에 대한 ArcGIS Web Adaptor 호출을 프록시합니다.
ProxyPass /nbs ajp://myserver.acme.com:8009/nbs ProxyPassReverse /nbs ajp://myserver.acme.com:8009/nbs
- Apache HTTP Server ssl.conf 파일에서 프록시 규칙을 사용하여 Tomcat의 AJP 포트에 ArcGIS Web Adaptor SSL 호출을 프록시합니다. ArcGIS Notebook Server에서 사용하는 WebSocket 요청을 프록시하는 것도 중요합니다. WebSocket 요청이 제대로 처리되지 않으면 ArcGIS Notebook이 제대로 열리지 않습니다.
SSLProxyEngine On # Use RewriteEngine to handle WebSocket connection upgrades RewriteEngine On RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) wss://myserver.acme.com:8443/$1 [P,L] <Location "/nbs"> ProxyPreserveHost On ProxyPass ajp://myserver.acme.com:8009/nbs ProxyPassReverse ajp://myserver.acme.com:8009/nbs </Location>
- 구성 변경 사항을 적용하려면 Apache HTTP Server 서비스를 다시 시작합니다.
- ArcGIS Notebook Server로 ArcGIS Web Adaptor를 구성합니다.