LINUX.ORG.RU

Запрос пароля для входа на сайт из интернета.

 , ,


0

1

Добрый день. Есть корпоративный портал внутри сети. Наружу он не смотрит.

Попросили что бы он был доступен из интернета, но естественно запаролен. Внутри локалки что бы был без пароля.

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

Конфиг nginx такой.

upstream backend-info {server unix:/var/run/php7-info.sock;}
server {
        listen 80;
        server_name info.imgrand.ru;
        root /var/www/info/www;
        access_log          /var/log/nginx/info-access.log;
        error_log           /var/log/nginx/info-error.log;
        index index.php index.html index.htm index.nginx-debian.html;
        rewrite_log     on;
        error_page 405  =200 $uri;

        location ^~ /core/ {
                deny all;
        }
        location / {
                try_files       $uri $uri/ @rewrite;
        }
        location @rewrite {
                rewrite         ^/(.*)$ /index.php?q=$1;
        }
        location ~ \.php$ {
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass    backend-info;
        }
        location ~* ^.+\.(jpg|jpeg|gif|tif|css|png|js|ico|bmp|svg|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                access_log       off;
                expires          10d;
                break;
        }

        location ~ /\.ht {
                deny all;
        }
}

я конечно вычитал про

auth_basic «Restricted»; auth_basic_user_file /etc/nginx/.htpasswd;

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

А ещё вылезло что это дело должно же как-то управляться, а лучше что бы было связано с AD....

Спасибо.

Твой случай по-моему прямо в документации есть один в один

location / {            
            satisfy  any;
             allow 192.168.1.0;  #Internal IP
             deny   all;
             auth_basic           "Internet access password check";
             auth_basic_user_file /home/yaumamisuperhacker/.htpasswd;
}

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

Хотел ответить, что можно сделать два отдельных server{}, один из которых слушает локалный адрес, другой - глобальный. Но ваш вариант экономнее. Только вместо одного IP в allow надо указать локальную подсеть.

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

Сделал,

upstream backend-info {server unix:/var/run/php7-info.sock;}
server {
        listen 80;
        server_name info.imgrand.ru;
        root /var/www/info/www;
        access_log          /var/log/nginx/info-access.log;
        error_log           /var/log/nginx/info-error.log;
        index index.php index.html index.htm index.nginx-debian.html;
        rewrite_log     on;
        error_page 405  =200 $uri;

        location ^~ /core/ {
                deny all;
        }
        location / {
                satisfy any;
                allow 192.168.0.0/24;
                deny all;
                auth_basic      "Internet access password check";
                auth_basic_user_file /var/www/info/.htpasswd;
                try_files       $uri $uri/ @rewrite;
        }
        location @rewrite {
                rewrite         ^/(.*)$ /index.php?q=$1;
        }
        location ~ \.php$ {
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass    backend-info;
        }
        location ~* ^.+\.(jpg|jpeg|gif|tif|css|png|js|ico|bmp|svg|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                access_log       off;
                expires          10d;
                break;
        }

        location ~ /\.ht {
                deny all;
        }
}

Пароль из инета запрашивает, ввожу пароль и логин, запускает на сайт, но сайт карявый и при переходе на любую другую страницу недоступен =(

madcry ()