The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Nginx - не получается ограничить доступ к location, !*! Аноним, 10-Дек-19, 10:06  [смотреть все]
День добрый. Прошу помощи.

Имеется nginx, обслуживающий облако nextcloud. В облаке создан общий ресурс с доступом по ссылке cloud.domain.ru/s/AR1kS7om9Utk339
Ресурс этот доступен:

192.168.2.166 - - [10/Dec/2019:10:45:34 +0400] "GET / HTTP/2.0" 302 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
192.168.2.166 - - [10/Dec/2019:10:45:34 +0400] "GET /login HTTP/2.0" 200 3918 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
192.168.2.166 - - [10/Dec/2019:10:45:34 +0400] "GET /apps/theming/image/logo?useSvg=1&v=36 HTTP/2.0" 499 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
192.168.2.166 - - [10/Dec/2019:10:45:35 +0400] "GET /apps/theming/image/logo?v=36 HTTP/2.0" 499 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
192.168.2.166 - - [10/Dec/2019:10:46:52 +0400] "GET /s/AR1kS7om9Utk339 HTTP/2.0" 200 6600 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
192.168.2.166 - - [10/Dec/2019:10:46:53 +0400] "GET /apps/gallery/config.public?extramediatypes=1&token=AR1kS7om9Utk339 HTTP/2.0" 200 102 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"

Поставили задачу - ограничить доступ к этой ссылке по IP. Не думал, что будут проблемы, но... Сначала закрыл доступ для всех, добавил в nginx.conf:


location = /s/AR1kS7om9Utk339 {  
    deny all;
}

В браузере при открытии ожидаемо Forbidden, в логе - соответственно:

192.168.2.166 - - [10/Dec/2019:10:41:14 +0400] "GET /s/AR1kS7om9Utk339 HTTP/2.0" 403 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"

Теперь открываю доступ избранным:


location = /s/AR1kS7om9Utk339 {        
    allow 192.168.2.166/32;
    deny all;
}

Однако, в браузере почему-то Not Found, в логе - аналогично:

192.168.2.166 - - [10/Dec/2019:10:45:13 +0400] "GET /s/AR1kS7om9Utk339 HTTP/2.0" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"

Почему? Что я делаю не так?

  • Nginx - не получается ограничить доступ к location, !*! Аноним, 10:41 , 10-Дек-19 (1)
    > Имеется nginx, обслуживающий облако nextcloud

    Ниже весь nginx.conf


    user www;
    worker_processes  8;

    error_log  /var/log/nginx/error.log;

    events {
        worker_connections  1024;
    }

    http {
        include       mime.types;
        default_type  application/octet-stream;

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile        on;

        keepalive_timeout  65;

        client_max_body_size 0;

        upstream php-handler {
            server 127.0.0.1:9000;
        }

        server {
            listen 80;
            server_name cloud.domain.ru;
            return 301 https://$server_name$request_uri;
        }

        server {
            listen 443 ssl http2;
            server_name cloud.domain.ru;

            access_log /var/log/nginx/cloud.domain.access.log;
            error_log /var/log/nginx/cloud.domain.error.log;

            ssl_certificate /usr/local/etc/nginx/cloud.domain.ru.crt;
            ssl_certificate_key /usr/local/etc/nginx/cloud.domain.ru.key;

            add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            add_header Referrer-Policy no-referrer;
            add_header X-Frame-Options sameorigin;

            fastcgi_hide_header X-Powered-By;

            root /www/nextcloud/;

            location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
            }

    #        location = /s/AR1kS7om9Utk339 {
    #            allow 192.168.2.166/32;
    #            deny all;
    #        }

            location = /.well-known/carddav {
                #return 301 $scheme://$host/remote.php/dav;
                return 301 https://$host/remote.php/dav;
            }

            location = /.well-known/caldav {
                #return 301 $scheme://$host/remote.php/dav;
                return 301 https://$host/remote.php/dav;
            }

            fastcgi_buffers 64 4K;

            gzip on;
            gzip_vary on;
            gzip_comp_level 4;
            gzip_min_length 256;
            gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
            gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

            location / {
                rewrite ^ /index.php;
            }

            location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
                deny all;
            }

            location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
                deny all;
            }

            location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|ocm-provider\/.+)\.php(?:$|\/) {
                fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
                try_files $fastcgi_script_name =404;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param HTTPS on;
                fastcgi_param modHeadersAvailable true;
                fastcgi_param front_controller_active true;
                fastcgi_pass php-handler;
                fastcgi_intercept_errors on;
                fastcgi_request_buffering off;
            }

            location ~ ^\/(?:updater|ocs-provider|ocm-provider)(?:$|\/) {
                try_files $uri/ =404;
                index index.php;
            }

            location ~ \.(?:css|js|woff2?|svg|gif)$ {
                try_files $uri /index.php$request_uri;
                add_header Cache-Control "public, max-age=15778463";
                add_header X-Content-Type-Options nosniff;
                add_header X-XSS-Protection "1; mode=block";
                add_header X-Robots-Tag none;
                add_header X-Download-Options noopen;
                add_header X-Permitted-Cross-Domain-Policies none;
                add_header Referrer-Policy no-referrer;

                access_log off;
            }

            location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
                try_files $uri /index.php$request_uri;
                access_log off;
            }
        }
    }



    • Nginx - не получается ограничить доступ к location, !*! universite, 14:08 , 10-Дек-19 (2) –1

      ls -l /www/nextcloud/s /www/nextcloud/s/AR1kS7om9Utk339

      Что показывает?
      • Nginx - не получается ограничить доступ к location, !*! Аноним, 14:17 , 10-Дек-19 (3)
        >
         
        > ls -l /www/nextcloud/s /www/nextcloud/s/AR1kS7om9Utk339
        >

        > Что показывает?

        No such file or directory показывает.

        Ответ на вопрос "как сделать" нашел тут - https://serverfault.com/questions/845896/nginx-location-allo...

        Теперь, когда не подгоняют с решением, вникаю в механизм произошедшего.

        • Nginx - не получается ограничить доступ к location, !*! universite, 15:02 , 10-Дек-19 (4)
          >>
           
          >> ls -l /www/nextcloud/s /www/nextcloud/s/AR1kS7om9Utk339
          >>

          >> Что показывает?
          > No such file or directory показывает.

          Именно.
          Но прежде, вы должны ответить сами себе. Что именно вы хотите ограничить?
          Если данные лежат внутри nextcloud, то и этот локейшен тоже должен там лежать, со своим или общим обработчиком php.

          • Nginx - не получается ограничить доступ к location, !*! Аноним, 15:29 , 10-Дек-19 (5)

            > Если данные лежат внутри nextcloud, то и этот локейшен тоже должен там
            > лежать, со своим или общим обработчиком php.

            Де-факто их (данных) там нет, они вообще на другом сервере, а есть только информация в БД об общем ресурсе, плюс магия "pretty url"...
            Пока очень туго соображаю, как с этим соотносится


            Синтаксис:     try_files файл ... uri;
            try_files файл ... =код;
            Умолчание:     —
            Контекст:     server, location

            Проверяет существование файлов в заданном порядке и использует для обработки запроса первый найденный файл, причём обработка делается в контексте этого же location’а.

            • Nginx - не получается ограничить доступ к location, !*! universite, 15:31 , 10-Дек-19 (6)
              >> Если данные лежат внутри nextcloud, то и этот локейшен тоже должен там
              >> лежать, со своим или общим обработчиком php.
              > Де-факто их (данных) там нет, они вообще на другом сервере, а есть
              > только информация в БД об общем ресурсе, плюс магия "pretty url"...

              Если на другом сервере, тогда proxy_pass.

              • Nginx - не получается ограничить доступ к location, !*! Аноним, 15:38 , 10-Дек-19 (7)

                > Если на другом сервере, тогда proxy_pass.

                нет, не то.
                Шары создаются внутри nextcloud и ни к каким конкретным каталогам/файлам могут вообще не привязываться.
                Данная конкретная шара вообще ведет на windows-файлопомойку.


                • Nginx - не получается ограничить доступ к location, !*! universite, 15:44 , 10-Дек-19 (8)
                  >> Если на другом сервере, тогда proxy_pass.
                  > нет, не то.
                  > Шары создаются внутри nextcloud и ни к каким конкретным каталогам/файлам могут вообще
                  > не привязываться.
                  > Данная конкретная шара вообще ведет на windows-файлопомойку.

                  тогда proxy_pass

                  • Nginx - не получается ограничить доступ к location, !*! Аноним, 18:18 , 10-Дек-19 (9)
                    > тогда proxy_pass

                    1. proxy_pass в конфига отсутствует, а шары с другиз серверов - работают
                    2.


                    location = /s/AR1kS7om9Utk339 {
                          deny 10.0.0.16/32;
                          allow 10.0.0.0/8;
                          deny all;
                          try_files $uri $uri/ /index.php?$query_string;
                    }

                    решает мой вопрос, proxy_pass также не наблюдается.

                    Ответ "почему" также расписан по ссылке, которую я давал. Не хватает времени и знаний, чтобы четко осознать сказанное на чужом языке. Но это временно :)

                    • Nginx - не получается ограничить доступ к location, !*! universite, 18:54 , 10-Дек-19 (10)
                      >[оверквотинг удален]
                      >       deny 10.0.0.16/32;
                      >       allow 10.0.0.0/8;
                      >       deny all;
                      >       try_files $uri $uri/ /index.php?$query_string;
                      > }
                      >
                      > решает мой вопрос, proxy_pass также не наблюдается.
                      > Ответ "почему" также расписан по ссылке, которую я давал. Не хватает времени
                      > и знаний, чтобы четко осознать сказанное на чужом языке. Но это
                      > временно :)

                      Проксирование средствами php, чудес не бывает. Главное, чтоб памяти хватило :)

                      • Nginx - не получается ограничить доступ к location, !*! Аноним, 19:06 , 10-Дек-19 (11)
                        > Проксирование средствами php, чудес не бывает.

                        Вот это больше похоже на правду. Ответ где-то тут


                                location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|ocm-provider\/.+)\.php(?:$|\/) {
                                    fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
                                    try_files $fastcgi_script_name =404;
                                    include fastcgi_params;
                                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                    fastcgi_param PATH_INFO $fastcgi_path_info;
                                    fastcgi_param HTTPS on;
                                    fastcgi_param modHeadersAvailable true;
                                    fastcgi_param front_controller_active true;
                                    fastcgi_pass php-handler;
                                    fastcgi_intercept_errors on;
                                    fastcgi_request_buffering off;
                                }

                        Вот как понять "But you are overriding the try_files statement in the location / block, so you should add it to the new location block"
                        Непонятно конкретно вот это - "Вы переопределяете try_files в блоке location /"
                        Как бы это выразиться - каждое новое определение location заново инициализирует...обнуляет...приводит в значение по умолчанию значение try_files, что ли?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру