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