如何使私人家庭伺服器連接到雲 vpn 中的wireguard 伺服器可供公眾訪問?
基本上我想做的是讓本地家庭伺服器在網際網路上公開訪問。不幸的是,我的 ISP 正在使用 CGNAT 並獲得公共 ip,我需要支付額外費用(約 50 美元)。我認為使用 VPS 會更便宜。
因此,我通過執行 Ubuntu 20.04 的 Compute Engine VM 在 Google Cloud 中設置了一個 Wireguard 伺服器。我還在家里為我的本地伺服器設置了一個 Wireguard 客戶端,並將其連接到 Google Cloud 中的 Wirequard 伺服器。最後,我在我的 Android 手機上設置了另一個 Wireguard 客戶端,將其連接到伺服器,一切正常。當我在我的安卓手機上使用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時才能訪問它。
還有什麼我需要做的嗎?
感謝任何回饋。
您應該閱讀http://nginx.org/en/docs/http/ngx_http_proxy_module.html的文件
ngx_http_proxy_module
。
proxy_redirect
各州的文件:設置應在代理伺服器響應的“Location”和“Refresh”標頭欄位中更改的文本。
因此,目前您只建議 nginx 更改某些標頭中的一些文本,但不要將任何流量傳遞給(主伺服器)目標。
你至少需要一個
proxy_pass
指令來完成這項工作。請記住,nginx 不會替換您網站的內容!因此,如果您的主伺服器上的站點提供絕對路徑,則需要修復它。