クラウド VPN の Wireguard サーバーに接続されたプライベート ホーム サーバーを一般公開するにはどうすればよいですか?

クラウド VPN の Wireguard サーバーに接続されたプライベート ホーム サーバーを一般公開するにはどうすればよいですか?

基本的に、私がやりたいのは、ローカル ホーム サーバーをインターネットでパブリックにアクセス可能にすることです。残念ながら、私の ISP は CGNAT を使用しており、パブリック IP を取得するには追加料金 (約 50 ドル) を支払う必要があります。代わりに VPS を使用する方が安いと考えました。

そこで、Ubuntu 20.04 を実行する Compute Engine VM を介して Google Cloud に Wireguard サーバーをセットアップしました。また、自宅のローカル サーバーに Wireguard クライアントをセットアップし、Google Cloud の Wirequard サーバーに接続しました。最後に、Android スマートフォンに別の Wireguard クライアントをセットアップし、サーバーに接続したところ、すべて正常に動作しています。Android スマートフォンで Wireguard を使用すると、外部からローカル サーバーを見ることができます (テスト目的でモバイル データを使用)。

今、自宅のローカル サーバーを一般に公開したいと考えています。ドメインがあり、必要なレコードを設定しました。ping を実行すると、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:

プロキシされたサーバーの応答の「Location」および「Refresh」ヘッダー フィールドで変更するテキストを設定します。

したがって、現在は、nginx に一部のヘッダー内のテキストを変更するように指示しただけで、(ホーム サーバー) ターゲットにトラフィックを渡すように指示していません。

少なくとも、proxy_pass指令それを機能させるために。

nginx はサイトのコンテンツを置き換えないことに留意してください。そのため、ホーム サーバー上のサイトが絶対パスを提供している場合は、それを修正する必要があります。

関連情報