Pull to refresh

Comments 24

Так исторически сложилось, что в компании используется Nginx. Нужно было решать вопрос с имеющимися технологиями.
Цель туториала — помочь в настройке именно Nginx.
А в чем специфика конкретно UniFi?
Статью можно спокойно озаглавить «использование nginx в качестве обратного прокси (с бонусными главами про ssl-stripping, ssl-offloading и аутентификацию бэкенда)». Коих миллион.
Особенность Unifi в том, что он работает только с ssl. Большинство self-hosted софтин из коробки общаются по http и их настройка сводится к тому, чтобы проксировать им чистый трафик.

Проще говоря, эта статья не для тех кто может сформулировать понятие ssl-stripping и ssl-offloading и знает их применение ;)

Когда не знаешь как подступиться к проблеме, то ищешь сразу конкретные инструкции для своей задачи.
Огромное спасибо за статью! Весьма актуально, например для нас. Если бы статья была бы более общего плана — было бы сложнее. А так, можно настроить все что нужно, и за одно и для других сервисов приспособить.
Рад, что помогло.
Приятно слышать, что намерение сделать узкий туториал оправдалось. Самого не раз выручали подобные статьи на хабре.
Есть идеи, как избавиться от этого:

В Events веб интерфейса:

Admin unifiadmin log in from 127.0.0.1 Today 12:47 pm


Смущает некорректный адрес. proxy_set_header X-Real-IP $remote_addr; — вроде стоит. Можно конечно в случае чего смотреть логи nginx. Но не очень красиво.

Попробуйте использовать переменную $realip_remote_addr. Не забудьте установить real ip модуль.

Небольшой пруф, что это работает:
image

Спасибо! Убедился что мой nginx скомпилирован с данным модулем, но как правильно его применить, не очень понимаю.

Если не сложно, Вы могли бы выложить полноценный, измененный фрагмент конфигурации.

Сделал вот так, но не работает:

    location / {
        set_real_ip_from 127.0.0.1;
        real_ip_header X-Real-IP;
        proxy_set_header Referer "";
        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_pass https://xxxxxxx:8443/;
    }
}


Вероятно нужно выкинуть вот эту строку:

proxy_set_header X-Real-IP $remote_addr;


Но не уверен.

Спасибо.

Заменить X-Real-IP с $remote_addr на $realip_remote_addr;


location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $realip_remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass https://unifi;
  }
Благодарю. Но не работает (по-прежнему, ip не верный в логах unifi). Вы на своей инсталляции unifi смотрели? Вам это помогло? Может unifi чуть более хитрее?

Спасибо!

У Unifi есть несколько логов. Давайте определимся о каком мы говорим.
Ответьте, пожалуйста, в личные сообщения, так проще ориентироваться.

Я не совсем понял проблему которую вы решаете… :(
У меня Unifi Controller 5.2.9 работающий на CloudKey, все настройки по умолчанию.
И у меня никак кроме как по https с ним работать не получается.
Решаю проблему проксирования контроллера на кастомном железе через Nginx.
CloudKey — это здоровская вещь, но мы посчитали ее лишней для нас.
UFO just landed and posted this here
Боюсь, что я на него не смогу ответить полноценно. Но если коротко, то мы у себя не замечали сложностей со Skype.
Уверяю всех, что unifi тарелки, в настоящий момент не имеют: 802.11r/k. Разработчики в конце Января обещали выпустить только 802.11r.

Уверяю всех, что никакой бесшовности в unifi нету. Это наглейшая ложь. Есть некий ZeroHandoff, но сейчас его поддержка так же свернута (не поддерживается в AC серии).

Остается ждать только 802.11r/k.
2 раза перечитал вводную часть поста, но так и не понял, зачем вот это вот все? Для ssl-offloading'а? Чтобы опубликовать контроллер с валидным сертификатом? Для каких-то целей ИБ? Интересуюсь потому что у самих тоже Unifi, но контроллер работает из коробки, за периметр не смотрит, а с self-signed сертификатом для целей администрирования можно смириться. Тарелки, кстати, общаются с контроллером по http на порту 8080/tcp, если верить netstat'у и tcpdump'у.
Если контроллер за периметр не торчит, то вам это и ни к чему.
Туториал о том как вытащить наружу контроллер безопасно (и не только) с помощью Nginx.

Слишком тяжело. Вы слышали про caddy?


Вот пример конфигурации для домашнего Unifi (сертификат получается и обновляется автоматически):


unifi.deem.ru {
    gzip
    header / Strict-Transport-Security "max-age=31536000"
    proxy / https://10.173.3.15:8443 {
        insecure_skip_verify
        transparent
    }
}

Данный конфиг даёт вот такой результат:


image


Пруф: https://www.ssllabs.com/ssltest/analyze.html?d=unifi.deem.ru

На один из комментариев уже отвечал, что статья именно о NGINX(!). Разумеется есть и альтернативы, возможно, даже лучше подходящие для данного конкретного решения.
P.S. Если опустить различные не дефолтные настройки для SSL, то получится не менее емко :)
Действительно хочется кинуть тапком.

Почему не поставить тот же certbot который будет раз в 3 дня обновлять валидный сертификат от Lets Encrypt и дергать по хуку «systemctl reload nginx»?!
Идея классная) Даешь нескучные сертификаты!
Sign up to leave a comment.

Articles