LINUX.ORG.RU
решено ФорумAdmin

Как сделать Reverse Proxy

 


0

1

Всем привет!

Подскажите пожалуйста как сделать Reverse Proxy для дома, не могу понять инструкции, как получают ключи и что делать дальше.

Есть внешний IP - 94.22.33.44
На входе Mikrotik который перенаправляет порты 80,443
Есть внутренние сервера:
Nextcloud - 192.168.1.11 (порт 443, установлен сертификат)
BrainyCP - 192.168.1.12 (на нем пустая страничка для теста на 80 порту и «сайт» на wordpress с сертификатом)
Есть домен domain.ru

Как можно сделать чтобы вводя:
domain.ru - попадать на wordpress
cloud.domain.ru - попадать на nextcloud
cp.domain.ru - попадать в панель управления
test.domain.ru - попадать на страничку для теста

До чего хватило ума и что работает:
Установить Ubuntu 18.04
Установить nginx
Ввести конфиг

server {
    listen *:80;
    server_name test.domain.ru;
    access_log /var/log/nginx/access.log;

        location / {
            proxy_pass http://192.168.1.12:80/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_connect_timeout 120;
            proxy_send_timeout 120;
            proxy_read_timeout 180;
        }
}
При попытке захода по адресу test.domain.ru открывается тестовая страничка, как только я пытаюсь внести изменения в конфиг связанные с 443 портом и ключами - nginx падает.

Посоветуйте пожалуйста как сделать или дайте ссылку на как можно более подробную инструкцию.

Заранее спасибо!

Ответ на: комментарий от Deleted

Я пробовал сделать по этой инструкции https://topnet.com.ua/nastrojka-nginx-reverse-proxy/

Но после

создание символьный ссылки

ln -s /etc/nginx/sites-available/disk.topnet.conf /etc/nginx/sites-enabled/

nginx не запускается

Пробовал по этой инструкции https://serveradmin.ru/nginx-proxy_pass/

Но не могу срастить две инструкции по получению сертификата и всему остальному.

А главное не могу понять что делать с уже полученными сертификатами для wordpress и nextcloud.
Возможно ли ничего с ними не делать, а получить новые для reverse proxy и в дальнейшем только на нем обновлять?

mcheev ()

использовал подробный конфиг и не испытывал таких проблем, но ssl мне certbot прописывал, так что вероятно ошибка у вас в настройке сертификатов.

А ещё советую вам NixOS попробовать на севере, он очень многие юзкейсы самостоятельно разруливает без страданий, сам был шокирован, когда он мне после нескольких строк в конфиге поднял 2 домена (на одном nextcloud), memcache, opcache, таймер cron для nc и ssl

SR_team ★★★★ ()
Ответ на: комментарий от Deleted
server {
    listen 80;
    server_name test.domain.ru;
    access_log /var/log/nginx/test.domain.ru-access.log;
    error_log /var/log/nginx/test.domain.ru-error.log;
    return 301 https://$server_name$request_uri;
    }

server {
    listen 443 ssl; # managed by Certbot
    server_name test.domain.ru;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/test.domain.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/test.domain.ru/privkey.pem; # managed by Certbot
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    access_log /var/log/nginx/test.domain.ru-access.log;
    error_log /var/log/nginx/test.domain.ru-error.log;

    location /.well-known/acme-challenge/ {
        root /web/sites/test.domain.ru/www/;
    }

        location / {
            proxy_pass http://192.168.1.12/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_connect_timeout 120;
            proxy_send_timeout 120;
            proxy_read_timeout 180;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

}

В итоге:

root@proxy:/etc/nginx/sites-available# service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

root@proxy:/etc/nginx/sites-available# systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2019-11-03 20:37:53 UTC; 46s ago
     Docs: man:nginx(8)
  Process: 5205 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 5376 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
 Main PID: 3373 (code=exited, status=0/SUCCESS)

Nov 03 20:37:53 proxy systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 03 20:37:53 proxy nginx[5376]: nginx: [emerg] "ssl_session_timeout" directive is duplicate in /etc/letsencrypt/options-ssl-nginx.conf:8
Nov 03 20:37:53 proxy nginx[5376]: nginx: configuration file /etc/nginx/nginx.conf test failed
Nov 03 20:37:53 proxy systemd[1]: nginx.service: Control process exited, code=exited status=1
Nov 03 20:37:53 proxy systemd[1]: nginx.service: Failed with result 'exit-code'.
Nov 03 20:37:53 proxy systemd[1]: Failed to start A high performance web server and a reverse proxy server.
root@proxy:/etc/nginx/sites-available#
Тут - error_log /var/log/nginx/test.domain.ru-error.log; пусто

Сертификат получал по этой инструкции - https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx.html

mcheev ()
Ответ на: комментарий от anonymous
root@proxy:/etc/nginx/sites-available# sudo nginx -t
nginx: [emerg] "ssl_session_timeout" directive is duplicate in /etc/letsencrypt/options-ssl-nginx.conf:8
nginx: configuration file /etc/nginx/nginx.conf test failed

Но что с этим делать :) Я понимаю что дублируются настройка, но какая я не пониманию.

mcheev ()
Ответ на: комментарий от anonymous

Спасибо, заработало. Но с сертификатом что-то не то - https://prnt.sc/przv5x

Сертификат отображается от Let’s Encrypt

«Бросьте это, не ваше это…» - я думаю все начинают с такого уровня, не сразу гуру становятся. Но вот с reverse proxy я с радостью бросил, уже неделю сижу не могу вникнуть.

mcheev ()
Ответ на: комментарий от mcheev

я думаю все начинают с такого уровня, не сразу

не поверишь, все начинают еще хуже - с алфавита в первом классе. ты вот, как алфавит выучил? наверняка, шельмец, азбуку читал. такое же правило и здесь - читать документацию.

Anoxemian ★★★★★ ()
Ответ на: комментарий от Anoxemian

Вы очень суровый и явно варитесь в этой теме...

Вот скажите, вы знаете японский язык?
А если понадобится сделать заказ, например в японском ресторане - что сделаете?
Вряд ли перед этим вы пойдете на курсы японского языка.
Так же и в других областях, во многих областях мы не являемся специалистами, но делимся информацией друг с другом. Потихоньку учимся.

Есть задача, которую не получается решить, потому что, одно цепляется за другое и чтобы изучить вопрос, нужно потратить не один месяц. В итоге задача закрыта - а полученные знания через пару недель благополучно забываются.

Если есть люди знающие вопрос и готовые помочь, объяснить конкретную ситуацию - хорошо, если таких людей нет, значит буду дальше копаться и пытаться разобраться. Просто на это уйдет больше времени и возможно ничего не получится.

Если вы думаете я не смотрел документацию, то вы ошибаетесь. То что я не понял ее - да, это так. Я не понимаю все что там написано и как все увязать в один конфиг.

mcheev ()
Ответ на: комментарий от mcheev

не, это так не работает.

Вот скажите, вы знаете японский язык?

пару фраз, не более

А если понадобится сделать заказ, например в японском ресторане - что сделаете?

сделаю заказ на английском языке

смысл в том, что ресторану надо продать еду, а мне пожрать. мы найдем способ договориться. ты же считаешь, что тебе тупо нужно пожрать и не видишь, что nginx на этот факт глубоко покласть. надо пытаться головой все-таки.

Есть задача, которую не получается решить, потому что, одно цепляется за другое

да, это вся жизнь такая. ты либо можешь и прикладываешь силы и время, либо хлебушек.

Если есть люди знающие вопрос и готовые помочь, объяснить конкретную ситуацию

есть, конечно. но это с твоими аналогиями как если бы японец попытался научить тебя японскому за 5 минут. ну т.е. натурально гигантская дыра в знаниях и опыте. ну типа вот молоток и гвозди, ок, гугл, как построить звездолет. не ну а чего, вполне конкретная ситуация

так не работает (

Anoxemian ★★★★★ ()
Ответ на: комментарий от Anoxemian

сделаю заказ на английском языке

Вы же понимаете, что я утрирую...

есть, конечно. но это с твоими аналогиями как если бы японец попытался научить тебя японскому за 5 минут. ну т.е. натурально гигантская дыра в знаниях и опыте. ну типа вот молоток и гвозди, ок, гугл, как построить звездолет. не ну а чего, вполне конкретная ситуация

В соседней теме вы мне подсказали со строчкой

//10.10.2.1/nextcloud-data/ /mnt/nextcloud-data cifs username=nextcloud,password=hjjGGFVngy780d,domain=WORKGROUP,vers=2.0 0 0
И написали

vers=2.0 в 1.0 по умолчанию это не поддерживалось

В итоге получилось сделать, написать инструкцию т.е. получается благодаря молотку и гвоздям удалось построить звездолет.
Я даже не представляю сколько времени ушло бы на выяснение этого нюанса, по прежнему благодарен вам за помощь.

mcheev ()
Ответ на: комментарий от mcheev

Если есть люди знающие вопрос

Я не знал как проверить конфиги, но эту информацию я просто нагуглил. На это ушло несколько секунд.
Что вам мешало, поступить так-же?

anonymous ()
Ответ на: комментарий от Deleted

Вы меня не поняли...
Я рядом запустил nginx - типа сайт на 80 порту и вместо BrainyCP направил на него. Чтобы убедится что с полученным сертификатом все хорошо и надо разбираться с BrainyCP.

mcheev ()
Ответ на: комментарий от mcheev

Дружище, это гуглится буквально за 5 минут. Я правда сразу в оригинале нагуглю, но уверен, и русских манов как грязи. А уж твоя тупка в том треде была на грани терпения.

Anoxemian ★★★★★ ()
Ответ на: комментарий от mcheev

Есть задача, которую не получается решить, потому что, одно цепляется за другое и чтобы изучить вопрос, нужно потратить не один месяц. В итоге задача закрыта - а полученные знания через пару недель благополучно забываются.

Хорошая болезнь склероз, ничего не болит и каждый день что-то новое.
Прям напомнили одного соискателя(не с улицы, родитель из другого подразделения просил пристроить), краснодипломник, отличник, защитился 2 месяца назад, на вопрос, ну расскажи про дипломную работу, сказал «я уже не помню, давно это было». В результате отправлен был в слесаря.

И вот серьезно, вы тратите не один месяц, настраиваете. И потом если через две недели понадобиться аналогичное опять начинаете плодить темы «памагите»? Это похоже на паразита.

anc ★★★★★ ()
Ответ на: комментарий от anc

И вот серьезно, вы тратите не один месяц, настраиваете. И потом если через две недели понадобиться аналогичное опять начинаете плодить темы «памагите»? Это похоже на паразита.

В том то и дело, что не понадобиться, а если лет через 10 мне понадобится, то какие нибудь команды поменяются и надо снова изучать, либо судя по упрощению, все будет настраиваться одной командой или кнопкой.

Я вот реально не понимаю ваших наездов, вернее все больше и больше понимаю почему именно такое отношение к сообществу Linux в России.
Как будто я к вам домой/на рабочее место пришел, взял за грудки и начал требовать ответа на вопрос или решить проблему.

Ну умные вы, вам сверху не с руки ответить или не интересно - пройдите мимо, тема опустится, а автор будет дальше гуглить.
Извините, что помешал вашим культурным разговорам.

mcheev ()
Ответ на: комментарий от mcheev

Обитатели форума стремятся не оказывать медвежью услугу, а пытаются помочь понять и разобраться.
Когда ты пишешь конкретно что ты сделал, что получилось и что ты хотел получить, вместо «у меня ничего не работает» это располагает к помощи вместо троллинга.
Когда пишут что-то типа что сделали всё по ману, но не приводят итоговых конфигов и логов - это неправильно. Ты бы знал как часто люди проявляют невнимательность - из инструкции из 5 простых шагов делают только 3 или 4 шага, 2-3 делают с ошибками, так что нужно быть уверенным что вопрошающий помощи сделал всё правильно.

Deleted ()
Ответ на: комментарий от mcheev

Понимаете ли в чем проблема. Например, вам нужно подключить трехфазный электронагреватель, вы «весело» нагуглили, и возможно даже подключили на основе нагугленного, то есть бездумно, и даже возможно оно с первого раза заработало. Потом «бах» пожар, а почему он произошел? Потому что Вы не думали, вы только «кусками» выдирали инфу из инета.
Вам кажется что с ИТ всё не так плохо, нечему гореть, можно нагуглить, что-то настроить... только вот ботнетов и другой пакости из-за таких «я нагуглил/скопипастил» всё больше и больше.
Если это не ваша сфера деятельности, то как «модно» говорить «наймите специалистов». Если же это относиться к вашей сфере деятельности, то «купите букварь».

anc ★★★★★ ()
Ответ на: комментарий от anc

Ребят, я все понимаю и про наем специалиста и про риски, но это домашняя задача - «попробовать», возможно научится новому.

Я не просил решить мою задачу, я попросил совета

Посоветуйте пожалуйста как сделать или дайте ссылку на как можно более подробную инструкцию.

Посоветуйте как сделать - может мне не reverse proxy нужен, а сгодится другое решение, о котором я не знаю и соответственно не могу загуглить. Например в самом BrainyCP в настройках виртуального хоста добавить

location / {
proxy_set_header Host $host;
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://192.168.1.11;
}

Или дайте ссылку на как можно более подробную инструкцию - на многих найденных инструкций не соответствуют команды, в каких то местах происходит стоп, в каких-то разрыв действий.

mcheev ()
Ответ на: комментарий от mcheev

Как будто я к вам домой/на рабочее место пришел

Всё правильно, ЛОР — мой дом.

взял за грудки и начал требовать ответа на вопрос или решить проблему.

И получив ответ, продолжил шланговать.

anonymous ()
Ответ на: комментарий от anonymous

Давайте закончим разговор, к вам в дом больше не буду заходить :)

Вы похожи на врачей, которые вместо диагноза и метода лечения предлагают сначала закончить мед.
Вроде и забинтовать можно самостоятельно и мазью помазать, но вдруг что не так пойдет.

Вам кажется что с ИТ всё не так плохо, нечему гореть, можно нагуглить, что-то настроить... только вот ботнетов и другой пакости из-за таких «я нагуглил/скопипастил» всё больше и больше.

Вот это реальный аргумент.

mcheev ()
Ответ на: комментарий от mcheev

Вы похожи на врачей, которые вместо диагноза и метода лечения предлагают сначала закончить мед.

Опять плохая аналогия. Врачи как и специалисты в других областях за свои услуги получают денюшку.
Под Ваш вариант больше подходит пост вида: «У меня уже и нос отвалился и уши, я знаю что это сифилис, но к врачу не пойду, дайте совет как их приклеить назад» Или чуть проще, «капает с конца, знаю что триппер» «но к врачу не пойду» «чем закрыть краник, а то очень больно».
Любой врач вам скажет «сходите к специалисту, а не занимайтесь самолечением».

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)