공개적으로 액세스할 수 있는 클라우드 VPN의 Wireguard 서버에 연결된 개인 홈 서버를 만드는 방법은 무엇입니까?

공개적으로 액세스할 수 있는 클라우드 VPN의 Wireguard 서버에 연결된 개인 홈 서버를 만드는 방법은 무엇입니까?

기본적으로 내가 원하는 것은 인터넷에서 공개적으로 액세스할 수 있는 로컬 홈 서버를 만드는 것입니다. 불행하게도 내 ISP는 CGNAT를 사용하고 있으며 공개 IP를 얻으려면 추가 비용(약 $50)을 지불해야 합니다. 대신 VPS를 사용하는 것이 더 저렴하다고 생각했습니다.

그래서 Ubuntu 20.04를 실행하는 Compute Engine VM을 통해 Google Cloud에 Wireguard 서버를 설정했습니다. 또한 집에 있는 로컬 서버용 Wireguard 클라이언트를 설정하고 이를 Google Cloud의 Wirequard 서버에 연결했습니다. 마지막으로 Android 휴대폰에 또 다른 Wireguard 클라이언트를 설정하고 서버에 연결했는데 모든 것이 잘 작동합니다. 내 안드로이드 휴대폰에서 보안을 유지하고 있을 때 외부에서 내 로컬 서버를 볼 수 있습니다(테스트 목적으로 모바일 데이터 사용).

이제 집에 있는 로컬 서버를 대중에게 공개하고 싶습니다. 도메인이 있고 필요한 기록을 설정했습니다. 핑을 하면 GCE VM의 공개 IP가 반환되는데 이는 제대로 작동한다는 의미입니다. 다음으로 GCE VM에 Nginx를 설치했습니다. 잘 돌아가고 있어요. 도메인과 공용 IP 주소를 통해 기본 Nginx 페이지에 액세스할 수 있었습니다. 그런 다음 다음을 사용하여 기본 구성을 수정하고 그 후에 Nginx를 다시 시작했습니다.

server {
    listen 80;
    listen [::]:80;

    server_name sub.domain.org; #sample only

    location / {
            proxy_redirect http://10.200.200.2 http://sub.domain.org;
    }
}

내 Wireguard는 10.200.200.x IP 범위에 있고(정확한 용어인지 확실하지 않음) 10.200.200.2는 내 로컬 홈 서버의 Wireguard IP 주소입니다.

Nginx가 어떻게 작동하는지 이해하지 못했을 수도 있지만 Nginx를 통해 탐색을 통해 공개적으로 로컬 홈 서버에 액세스할 수 있을 것으로 기대했습니다.http://sub.domain.org. 아쉽게도 공개적으로 접근할 수는 없었습니다. Wireguard에 연결할 때만 액세스할 수 있습니다.

내가 해야 할 다른 일이 있나요?

어떤 피드백이라도 감사드립니다.

답변1

ngx_http_proxy_module의 문서를 읽어야 합니다.http://nginx.org/en/docs/http/ngx_http_proxy_module.html.

상태 에 대한 문서 proxy_redirect:

프록시 서버 응답의 "위치" 및 "새로 고침" 헤더 필드에서 변경되어야 하는 텍스트를 설정합니다.

따라서 현재 nginx에게 일부 헤더의 일부 텍스트를 변경하고 (홈 서버) 대상으로 트래픽을 전달하지 말라고 권고했습니다.

최소한proxy_pass지령그 일을하기 위해.

nginx는 사이트의 콘텐츠를 대체하지 않는다는 점을 명심하세요! 따라서 홈 서버의 사이트가 절대 경로를 제공하는 경우 이를 수정해야 합니다.

관련 정보