ImageCMS Shop + NGINX

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем HS!, 3 ноя 2014.

  1. HS!

    HS!

    Регистр.:
    3 мар 2013
    Сообщения:
    304
    Симпатии:
    231
    Доброго времени суток
    хочу поговорить про ImageCMS Shop + NGINX.
    Не так давно я слез с апача и перешёл на NGINX
    Сначала стоял Apache22 потом Apache 24 (лучше конечно 24) но всё же грузило сервер - во общем меня такое не устаревало.
    Установил я nginx настроил конфиг и ЧПУ для ImageCMS Shop. Сайтик запорхал, сервак попустило,

    но вот никак не могу запаролить админку при помощи nginx auth_basic + php-fpm

    админка то работает при помощи ЧПУ и ни укак не мнгу подобрать правило к site.ru/admin

    Привожу пример моего конфига nginx:

    Код:
            server {
    listen 80;
    charset utf-8;
    
        server_name site.ru;
    
        if ($host ~* ^www\.(.+)$) {
        set $newhost $1;
        rewrite ^ http://$newhost$request_uri permanent;
    }
        index index.php index.html index.htm;
        error_log  /log/error.log;
      
            autoindex on;
             autoindex_exact_size on;
            autoindex_localtime on;
    
        location / {
            root /www/public_html;
            if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php?q=$1 last;
        }
      
        }
      
        location ~* \.(css|js|swf|ico|png|jpg|gif|jpeg)$ {
    root   /www/public_html;
    access_log   off;
    expires      30d;
    }
      
      
    location ~ \.php$ {
                root           /www/public_html;
                fastcgi_pass   unix:/tmp/php5-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
                fastcgi_param PHP_VALUE "memory_limit = 700M";
            }
    
    
         location ~ /\.ht
            {
                    deny all;
            }
    
                                    }
        
     
    Последнее редактирование: 4 ноя 2014
    latteo нравится это.
  2. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    Так у вас и нету секции аутентификации, конечно работать не будет.


    Код:
    location /admin {
        auth_basic           "Admin Panel";
        auth_basic_user_file conf/htpasswd;
    }
    htpasswd само собой надо будет создать.
     
  3. HS!

    HS!

    Регистр.:
    3 мар 2013
    Сообщения:
    304
    Симпатии:
    231
    да такое правило я создавал. логи и пароль вводишь авторизовываешся и всё... самой то папки /admin/ нет - это ЧПУ
    поэтому просто белый экран
     
  4. HS!

    HS!

    Регистр.:
    3 мар 2013
    Сообщения:
    304
    Симпатии:
    231
    люди выручайте - как закрыть в этой ЦМС админку средствами запароливания с помощью nginx
    /admin/
    но самой то папки admin нет. так как это ЧПУ
    и я в растерянности.
    спасите помогите.
     
  5. balabolka

    balabolka Писатель

    Регистр.:
    24 мар 2015
    Сообщения:
    5
    Симпатии:
    2
    Могу предложить такой костыль
    location ^~ /admin/ {
    auth_basic "Admin Panel";
    auth_basic_user_file /var/www/.htpasswd;
    error_page 404 = @auth_ok;
    }
    location @auth_ok {
    rewrite ^(.+)$ /index.php?q=$1 last;
    }
    должно заработать

    вот сюда
    Код:
    location ~ .php$ {
    root /var/www/yoursite.com;
    try_files $uri =404;
    fastcgi_pass unix:/tmp/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param AUTH_USER $remote_user;
    fastcgi_param REMOTE_USER $remote_user;
    }
    их добавь, тогда после авторизации в /admin получишь переменные
    _SERVER["REMOTE_USER"]
    _SERVER["AUTH_USER"]
    без них будет только
    _SERVER["PHP_AUTH_USER"]
    _SERVER["PHP_AUTH_PW"]
    разницу обьясняют тут
    http://php.net/manual/ru/features.http-auth.php

    У меня лимит сообщений ((((
     
    Последнее редактирование: 27 мар 2015
  6. HS!

    HS!

    Регистр.:
    3 мар 2013
    Сообщения:
    304
    Симпатии:
    231
    Вот что я добавляю

    Код:
    
    location ^~ /admin/ {
    auth_basic "Restricted";
    auth_basic_user_file /var/www/.htpasswd;
    
            location ~ .php$ {
                root           /var/www/yoursite.com;
                try_files $uri =404;
                fastcgi_pass   unix:/tmp/php5-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
               
            }
    }
    

    перехожу на site.com/admin
    мне вылетает окошко введите пароль
    ввожу пороль и логин
    и выдаёт
    404 Not Found


    если прописать
    if (!-e $request_filename) {
    rewrite ^(.+)$ /index.php?q=$1 last;
    }

    то заходит нормально но пароль не просит =))))



    про это я не понял
     
    Последнее редактирование модератором: 30 мар 2015
  7. balabolka

    balabolka Писатель

    Регистр.:
    24 мар 2015
    Сообщения:
    5
    Симпатии:
    2
    Помогло через дополнительный location?
     
  8. HS!

    HS!

    Регистр.:
    3 мар 2013
    Сообщения:
    304
    Симпатии:
    231
    Вот такое навоял и помогло
    всё работает 100%
    Код:
    #Паролим вход в админку.
           location /admin {
                           auth_basic "Restricted";
                           auth_basic_user_file /www/site.com/.htpasswd;
                           try_files $uri $uri/ /index.php;
      }
             location ~ ^/admin(.+\.php)$ {
                            fastcgi_split_path_info ^(.+\.php)(/.+)$;
                            fastcgi_pass unix:/var/run/php5-fpm.sock;
                            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }