Вы не авторизованы

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

RSS
Интерфес MikoPBX за Nginx, Как сделать доступ к интерфейсу MikoPBX через nginx в качестве реверс прокси?
 
Добрый день. Подскажите, есть ли рекомендации по настройке такого кейса?
Есть АТС Мико PBX в локальной сети. Доступ к ней извне нужен только к web-интерфейсу. Так же в сети есть веб-сервер Nginx, он уже обслуживает корпоративный портал. Была мысль настроить существующий nginx в качестве реверс-прокси для доступа к веб-интерфейсу Мико.
Вот кусок конфига

Код
...
    location /mikopbx {
        proxy_pass http://192.168.66.8/;
    }
...
В таком виде я получаю доступ к веб-интерфейсу, но не получаю статику.
Просьба дать рекомендации, в какую сторону копать, каких опций добавить для того чтобы получить на странице статику.
 
Какие есть ошибки в консоли браузер?
В логах nginx на вашем сервере?
 
Действительно. Я указал не все исходные данные. Исправляюсь.
Интерфейс мико будет доступен по адресу domain.com/mikopbx.
Вот кусок лога Nginx. Остальные сводятся к этому же.
Код
2022/06/06 08:02:47 [warn] 23#23: *228 using uninitialized "https_redirect" variable, client: X.X.X.X, server: domain.com, request: "GET /admin-cabinet/assets/js/pbx/Session/login-form.js?ver=778d259e586e195f39325eeffb6bf853 HTTP/1.1", host: "domain.com", referrer: "https://domain.com/mikopbx"
2022/06/06 08:02:47 [error] 23#23: *228 open() "/usr/share/nginx/html/admin-cabinet/assets/js/pbx/Session/login-form.js" failed (2: No such file or directory), client: X.X.X.X, server: domain.com, request: "GET /admin-cabinet/assets/js/pbx/Session/login-form.js?ver=778d259e586e195f39325eeffb6bf853 HTTP/1.1", host: "domain.com", referrer: "https://domain.com/mikopbx"
X.X.X.X - - [06/Jun/2022:08:02:47 +0000] "GET /admin-cabinet/assets/js/pbx/Session/login-form.js?ver=778d259e586e195f39325eeffb6bf853 HTTP/1.1" 404 153 "https://domain.com/mikopbx" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0" "-"
2022/06/06 08:02:47 [warn] 23#23: *228 using uninitialized "https_redirect" variable, client: X.X.X.X, server: domain.com, request: "GET /admin-cabinet/assets/js/pbx/main/footer.js?ver=778d259e586e195f39325eeffb6bf853 HTTP/1.1", host: "domain.com", referrer: "https://domain.com/mikopbx"
2022/06/06 08:02:47 [error] 23#23: *228 open() "/usr/share/nginx/html/admin-cabinet/assets/js/pbx/main/footer.js" failed (2: No such file or directory), client: X.X.X.X, server: domain.com, request: "GET /admin-cabinet/assets/js/pbx/main/footer.js?ver=778d259e586e195f39325eeffb6bf853 HTTP/1.1", host: "domain.com", referrer: "https://domain.com/mikopbx"
X.X.X.X - - [06/Jun/2022:08:02:47 +0000] "GET /admin-cabinet/assets/js/pbx/main/footer.js?ver=778d259e586e195f39325eeffb6bf853 HTTP/1.1" 404 153 "https://domain.com/mikopbx" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0" "-"
А вот в консоли браузера. Остальные такие же.
Код
Загрузка <sc ript> по адресу «https://domain.com/admin-cabinet/assets/js/pbx/main/footer.js?ver=778d259e586e195f39325eeffb6bf853» не удалась.
Получается, что интерфейс веб-панели лежит по адресу domain.com/mikopbx. Скрипты, точнее вся статика, ищутся по адресу domain.com/admin-cabinet/bla-bla, а фактически они лежат по адресу domain.com/mikopbx/admin-cabinet/bla-bla.
Подозреваю, что необходимо передать какой-то заголовок с прокси. Но какой?
Пробовал подставлять такие, но ничего не вышло.
Код
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header Connection $http_connection;
 
Попробуйте по этой инструкции:
https://gist.github.com/soheilhy/8b94347ff8336d971ad0#step-7----rewriting-requests
 
Цитата
написал:
Попробуйте по этой инструкции:
https://gist.github.com/soheilhy/8b94347ff8336d971ad0#step-7----rewriting-requests
Да, пробовал. Не подходит это решение.

Ещё есть другое приложение по адресу domain.com/myapp. Оно работает с таким конфигом.
Код
location /myapp/ {
    proxy_pass http://192.168.0.7:8080/myapp/;
    proxy_buffering off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    access_log off;
}
Но для Мико такой конфиг не подошел.

Стоит добавить, что для запуска Мико в Docker требуется, чтобы контейнер работал в сети хостовой машины. Может это связано? Может тут можно подсмотреть решение? Я поискал, не нашел.
 
В целом, после просмотра конфигов Nginx на GitHub'е удалось понять что и как. Получился вот такой конфиг.
Код
location /mikopbx/ {
   proxy_pass http://192.168.0.8/;
   proxy_redirect default;
   proxy_buffering off;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $host;
   access_log off;
}

location /admin-cabinet/ {
   proxy_pass http://192.168.0.8/admin-cabinet/;
}

location /pbxcore/ {
   proxy_pass http://192.168.0.8/pbxcore/;
}
Осталась только одна проблема. Если зайти на страницу https://domain.com/mikopbx, пройти авторизацию, то происходит редирект не на главную страницу панели Мико, а на адрес https://domain.com//admin-cabinet//mikopbx/ Не знаю почему. Возможно этим управляет само приложение?
Ладно, худо-бедно результат получил.
Читают тему (гостей: 1)