Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
   RSS
Unifi Controller за nginx-прокси – Server.log LocalHost, UniFi Network
 
Привет! Я пытаюсь настроить Unifi Controller за обратным прокси nginx, чтобы nginx управлял SSL-сертификатами Let's Encrypt. Используя примеры конфигураций из разных постов, мне удалось всё запустить, и оно работает. Но в файле server.log и в логах контроллера входы пользователей отображаются с LocalHost вместо реального IP. Есть ли какие-то особые настройки в Unifi или nginx, о которых стоит знать?

Вот моя конфигурация:

server {
   listen 80 default_server;
   include /etc/nginx/snippets/letsencryptauth.conf;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;
   root /var/www/html;
   server_name xxxxx.xxxxx.xxxxx;
   location /inform {
       proxy_pass http://localhost:8080/inform;
       include /etc/nginx/proxy_params;
   }
   location / {
       return 301 https://localhost$request_uri;
   }
}

server {
   listen 443 ssl http2;
   server_name xxxxx.xxxxx.xxxxx;

   ssl on;
   ssl_certificate /etc/letsencrypt/live/xxxxx.xxxxx.xxxxx/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/xxxxx.xxxxx.xxxxx/privkey.pem;
   ssl_trusted_certificate /etc/nginx/ssl/default/unifi.pem;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;

   ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
   ssl_prefer_server_ciphers on;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 5m;
   add_header Strict-Transport-Security "max-age=31536000" always;

   server_tokens off;

   proxy_ssl_verify off;
   proxy_ssl_session_reuse on;
   proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   proxy_cache off;
   proxy_store off;

   location /wss {
       proxy_pass https://localhost:8443/wss;
       proxy_redirect off;
       proxy_buffering off;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_ssl_verify off;
   }

   location / {
       proxy_pass https://127.0.0.1:8443;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_intercept_errors on;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

И вот пример вывода из server.log:

[2017-08-07 20:52:50,222] <webapi-157> INFO api - [api] Failed admin login for aa from 127.0.0.1
[2017-08-07 20:52:50,814] <webapi-157> INFO api - [api] api.err.Invalid: /api/login

Я также пробовал аналогично настроить apache — результат тот же. Буду благодарен за помощь. Спасибо!
Страницы: Пред. 1 2
Ответы
 
Итак, по какой-то причине (возможно, из-за обновления прошивки) моё решение выше перестало работать. Посмотрев посты @tadam и @muhlman, я решил попробовать кое-что, и в итоге получил гораздо более простую конфигурацию, которая снова работает.

server {
   listen 443 ssl;
   server_name unifi.mydomain.com;

   include snippets/ssl-www.mydomain.com.conf;
   include snippets/ssl-params.conf;

   error_log /var/log/nginx/unifi.mydomain.com/error.log warn;
   access_log /var/log/nginx/unifi.mydomain.com/access.log;

   location / {
       include /etc/nginx/proxy_params;

       proxy_pass https://10.x.x.x:8443$request_uri;

       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
   }
}

Пару моментов для заметки: я убрал отдельный location для websockets (/wss). Но мне понадобились последние две строки (Upgrade $http_upgrade и Connection "Upgrade"), чтобы websocket-соединения заработали. Все остальные параметры прокси берутся из стандартного сниппета nginx proxy_params.conf. Я за простоту — и вот это решение теперь работает у меня! Кстати, это только прокси для контроллера, мой отдельный прокси (cloudkey) всё ещё работает, как я писал раньше.
Страницы: Пред. 1 2
Читают тему (гостей: 1)