基本的に、私がやりたいのは、ローカル ホーム サーバーをインターネットでパブリックにアクセス可能にすることです。残念ながら、私の 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 はサイトのコンテンツを置き換えないことに留意してください。そのため、ホーム サーバー上のサイトが絶対パスを提供している場合は、それを修正する必要があります。