Nginx

如何使私人家庭伺服器連接到雲 vpn 中的wireguard 伺服器可供公眾訪問?

  • September 13, 2021

基本上我想做的是讓本地家庭伺服器在網際網路上公開訪問。不幸的是,我的 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 不會替換您網站的內容!因此,如果您的主伺服器上的站點提供絕對路徑,則需要修復它。

引用自:https://serverfault.com/questions/1077402