Как сделать частный домашний сервер, подключенный к серверу Wireguard в облачном VPN, доступным для общественности?

Как сделать частный домашний сервер, подключенный к серверу Wireguard в облачном VPN, доступным для общественности?

По сути, я хочу сделать локальный домашний сервер доступным публично в Интернете. К сожалению, мой провайдер использует CGNAT, и чтобы получить публичный IP, мне нужно заплатить дополнительно (около 50 долларов). Я решил, что дешевле использовать VPS.

Итак, я настроил сервер Wireguard в Google Cloud через виртуальную машину Compute Engine под управлением Ubuntu 20.04. Я также настроил клиент Wireguard для своего локального сервера дома и подключил его к серверу Wirequard в Google Cloud. Наконец, я настроил еще один клиент Wireguard на своем телефоне Android, подключил его к серверу, и все работает нормально. Когда я использую Wireguard на своем телефоне Android, я могу видеть свой локальный сервер снаружи (используя мобильные данные для тестирования).

Теперь я хочу сделать локальный сервер дома доступным для общественности. У меня есть домен, и я настроил необходимые записи. Когда я пингую его, он возвращает публичный IP виртуальной машины GCE, что, как я полагаю, означает, что он работает нормально. Затем я установил Nginx в свою виртуальную машину GCE. Он заработал нормально. Я смог получить доступ к странице Nginx по умолчанию через домен и публичный IP-адрес. Затем я изменил конфигурацию по умолчанию, используя следующее, и перезапустил 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 находится в диапазоне IP-адресов 10.200.200.x (не уверен, что это правильный термин), а 10.200.200.2 — это IP-адрес Wireguard моего локального домашнего сервера.

Я, возможно, не понимаю, как работает 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 не заменяет содержимое ваших сайтов! Так что если ваш сайт на домашнем сервере обслуживает абсолютные пути, вам нужно это исправить.

Связанный контент