@luxter

Как ограничить часть портала Extranet в Bitrix?

Добрый день! Имеется портал на битрикс, публичная его часть (portal.company.ru) должна быть доступна только через VPN, а раздел portal.company.ru/extranet должен быть доступен для всего интернета.

Средствами nginx пытался сделать ограничение для доступа по VPN, отрабатывает отлично :

location / {

               allow <ext_office_IP>;
               allow <ext__office_IP>;
               deny all;
                proxy_pass http://10.16.0.18:80;
                proxy_redirect http://10.16.0.18:80 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                }


А вот с частью Extranet нюансы:

location /bitrix/ {
                proxy_pass http://10.16.0.18:80;
                proxy_redirect http://10.16.0.18:80 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }

location /extranet/ {
                proxy_pass http://10.16.0.18:80;
                proxy_redirect http://10.16.0.18:80 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }


Так как при входе на часть Extranet, подгружаются js и css из /bitrix, то выдает 403 - это вроде бы решил, добавив ещё один location /bitrix, но после авторизации в Extranet некоторые ссылки ведут на portal.company.ru, который доступен только через VPN , и я снова у разбитого корыта с 403 ошибкой. Подскажите, пожалуйста, как корректно можно настроить разграничение.

Может, есть способ сделать это через map и $http_referer ?

Cпасибо.
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@luxter Автор вопроса
Такой вариант можно попробовать.

В контексте http
map $http_referer $pass_ref {
        default 0;
        "~<domain.ru>" 1;
}

        map $remote_addr $pass_ip {
        default 0;
        <ext IP> 1;
}

        map $pass_ref:$pass_ip $block {
        default 1;
        1:0 0;
        0:1 0;
        1:1 0;
        0:0 1;
}


if ($block = "1") {
               return 404;
                       }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы