Показать статистику
+4 голосов
от (160 баллов)
Есть:
Домашний сервер с серым IP(возможности получить белый - нету), подключённый к VPS по WireGuard: 10.175.139.12

На домашнем сервере развёрнут nextcloud который доступен по 10.175.139.12/cloud

VPS с белым IP, открытыми портами, подключенным доменом: ip wireguard 10.175.139.1, внешний ip 1.2.3.4, домен imostrovskiy.xy.z

Нужно: сделать конфиг при помощи которого пользователи при заходе на imostrovskiy.xy.z попадали в 10.175.139.12/cloud

перепробовал кучу конфигов с интернета, результат один - страница с надписью "Welcome to nginx!"

Ранее с ngnix не работал, выручайте
472 просмотров 1 ответов
от (17.4тыс. баллов)
редактировать от
0

Спасибо за интересный вопрос! Можно попросить вас показать какие именно опции вы пробовали в конфигурации Nginx? (можно просто скопи-пастить конфиг сюда)

А без proxy_pass вы пробовали? (заранее sorry если это что то совсем неподходящее - нет подобного сетапа под рукой что бы проверить)

server {
# Permanent redirect to 10.175.139.12
server_name imostrovskiy.xy.z;
rewrite ^/(.*)$ http://10.175.139.12/cloud/$1 permanent;
}

При этом ваш домен imostrovskiy.xy.z должен резолвиться в белый IP адрес вашей VPS-ки.

Думаю что будет не лишним указать в /etc/hosts

10.175.139.12 imostrovskiy.xy.z

ДОБАВЛЕНО. Еще один вопрос -  что если попробовать через iptables

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.175.139.12:80
iptables -t nat -A POSTROUTING -j MASQUERADE
от (4.5тыс. баллов)
0

А что если подойти к вопросу иначе и сделать document root на директорию через sshfs?

sshfs login@1-/10.175.139.12:/var/www/document_root ~/remoteDir

В этом случае можно обойтись без редиректов и форвардов.

1 Ответ

0 голосов
от (140 баллов)
редактировать от

А у вас в локальной сети работает веб-интерфейс nextcloud ?
И он отзываться на http://localhost:80 или http://local-IP:80

Тогда попробуйте настроить простенький proxy-server-nginx
Заходим на VPS в которой есть доступ в мир
Устанавливаем Nginx:

sudo apt update
sudo apt install nginx

После установки Nginx вы можете настроить брандмауэр, Nginx зарегистрируется ufw. Итак, вы можете разрешить необходимые порты и включить ufw:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'

Убедитесь, что вы добавили правила для порта 22 SSH, если вы этого не сделали, вы не сможете получить доступ к SSH. После подтверждения вы можете включить UFW.

sudo ufw enable

Установите Certbot и его плагин Nginx с помощью apt:

sudo apt install certbot python3-certbot-nginx

Запускаем certbot:

sudo certbot --nginx -d yourdomainname.com

Переименуем default настройки Nginx и удалим simlink чтобы отключить страницу "Welcome nginx":

sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default_original
sudo rm -rf /etc/nginx/sites-enabled/default

Создаем новую конфигурацию для проксирования трафика в локальную сеть:

sudo vim /etc/nginx/sites-available/yourdomainname.com
server {
   listen [::]:80;
   listen 80;
   server_name yourdomainname.com;
   return 301 https://yourdomainname.com$request_uri;
}

server {
   listen [::]:443 ssl;
   listen 443 ssl;

   server_name yourdomainname.com;

   ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem;

   location / {
       proxy_set_header        Host $host:$server_port;
       proxy_set_header        X-Real-IP $remote_addr;
       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header        X-Forwarded-Proto $scheme;
       proxy_pass          http://127.0.0.1:80;
       proxy_read_timeout  90;
       proxy_redirect      http://127.0.0.1:80 https://yourdomainname.com;

       proxy_http_version 1.1;
       proxy_request_buffering off;
       add_header 'X-SSH-Endpoint' 'yourdomainname.com:50022' always;
   } 
}

Замените следующее:

127.0.0.1:80 - на свою локальною IP (10.175.139.12:80)
yourdomainname.com - на свое доменое имя

Создаем symlink чтобы включить эту конфигурацию:

ln /etc/nginx/sites-available/yourdomainname.com /etc/nginx/sites-enabled/yourdomainname.com

Далее проверьте синтаксис nginx и перезагрузите его:

sudo nginx -t
sudo systemctl restart nginx
...