Помощь simpla cms nginx+php-fpm config

donvictorio

Хранитель порядка
Регистрация
28 Янв 2010
Сообщения
872
Реакции
849
выловил на просторах сети.
PHP:
server {
    listen          80;
    server_name    simpla.lo;
    root /home/sites/simpla.lo/www;
    access_log off;
 
    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }
 
    location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
    }
 
    location ~* \.(txt|log)$ {
            allow 127.0.0.1;
            deny all;
    }
 
    location ^~ /simpla {
        auth_basic "Administrator Login";
        auth_basic_user_file $document_root/simpla/.passwd;
     
        try_files $uri $uri//index.php;
 
        index index.php;
     
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/tmp/www.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        }
    }
 
    location ~ /\. { deny all; }
 
    location ~* ^/(api|cache|compiled|config|design/(.*)/html|payment|Smarty|view)/(.*) { deny all; }
 
    location / {
            try_files $uri @rewrite;
    }
 
    location @rewrite {
        rewrite ^/catalog/([^/]+)/?$    index.php?module=ProductsView&category=$1;
        rewrite ^/catalog/([^/]+)/([^/]+)/?$    index.php?module=ProductsView&category=$1&brand=$2;
        rewrite ^/products/([^/]+)/?$    index.php?module=ProductView&product_url=$1;
        rewrite ^/products/?$    index.php?module=ProductsView;
        rewrite ^/brands/([^/]+)/?$    index.php?module=ProductsView&brand=$1;
        rewrite ^/brands/([^/]+)/page_([^/]+)/?$    index.php?module=ProductsView&brand=$1&page=$2;
        rewrite ^/search/([^/]+)/?$    index.php?module=ProductsView&keyword=$1;
        rewrite ^/search/?$    index.php?module=ProductsView;
        rewrite ^/blog/([^/]+)/?$    index.php?module=BlogView&url=$1;
        rewrite ^/blog/?$    index.php?module=BlogView;
        rewrite ^/cart/?$    index.php?module=CartView;
        rewrite ^/cart/([^/]+)/?$    index.php?module=CartView&add_variant=$1;
        rewrite ^/cart/remove/([^/]+)/?$    index.php?module=CartView&delete_variant=$1;
        rewrite ^/order/([^/]+)/?$    index.php?module=OrderView&url=$1;
        rewrite ^/order/?$    index.php?module=OrderView;
        rewrite ^/user/login/?$    index.php?module=LoginView;
        rewrite ^/user/register/?$    index.php?module=RegisterView;
        rewrite ^/user/logout/?$    index.php?module=LoginView&action=logout;
        rewrite ^/user/password_remind/?$    index.php?module=LoginView&action=password_remind;
        rewrite ^/user/password_remind/([0-9a-z]+)/?$    index.php?module=LoginView&action=password_remind&code=$1;
        rewrite ^/user/?$    index.php?module=UserView;
        rewrite ^/sitemap.xml?$    sitemap.php last;
        rewrite ^/yandex.xml?$    yandex.php last;
        rewrite ^/contact/?$    index.php?module=FeedbackView;
        rewrite ^/order/([^/]+)/([^/]+)/?$    index.php?module=OrderView&url=$1&file=$2;
        if (!-f $request_filename){
            set $rule_26 1$rule_26;
        }
        if (!-d $request_filename){
            set $rule_26 2$rule_26;
        }
        if ($rule_26 = "21"){
            rewrite ^/([^/]*)/?$    index.php?module=PageView&page_url=$1;
        }
        rewrite ^/?$    index.php?module=MainView&page_url=;
     
        rewrite ^ /index.php;
    }
 
    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/tmp/www.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
 
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        if (!-d $request_filename){
            set $rule_28 1$rule_28;
        }
     
        if (!-e $request_filename){
            rewrite ^/files/products/(.+) /resize/resize.php?file=$1&token=$query_string;
        }
 
        if (!-f $request_filename){
            set $rule_28 2$rule_28;
        }
        if ($rule_28 = "21"){
            rewrite ^/files/products/(.+) resize/resize.php?file=$1&token=$args;
        }
        expires max;
        log_not_found off;
    }
}


но у меня есть парочка проблем - в админке при редактировании товара, когда добавляю изображение по ссылке - оно создаётся, но не загружается, в итоге вместо него квадратик.
и при сохранении товара выдаёт ошибку 502 Bad Gateway, но данные сохраняются.
если кто разбирается, намекните, где баг.
 
Я так понимаю Simpla не дружит с nginx. Во всяком случае я заворачиваться не стал и тупо его отключил. Ошибки были те же самые. Хорошо что у мен VPS. Единственное посмотрите чтобы у Вас Myadmin не работал через nginx
 
Кто бы помог с nginx конфигами разобраться, наверное тут кое-что нужно смогу получить. Я сейчас под свой форк симплы решил, что маршрутизацию лучше сделать внутри в итоге все включая ссылки на картинки через ресайзилку идет через главный контроллер.
Т.е. осталась только админка. В итоге в конфиге к апачу 3 строчки.

# Админка теперь по адресу /simpla
RewriteRule ^admin/?$ simpla [L]
RewriteRule ^simpla/?$ simpla/index.php [L]


# Все запросы обрабатывает главный контроллер
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

Не могу справится с этим конфигом и заставить его работать в nginx, никак не врублюсь как надо написать.

Сейчас вот так.

location / {
try_files $uri $uri/ =404;
rewrite / /index.php;
}
Работает, но не очень хорошо. Этот блок у меня заменяет инструкции .
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

Т.е. если есть файл из uri, открываем его, если файла нет делаем rewrite на /index.php. Как заменить остальные инструкции не врубаюсь совершенно.
 
Назад
Сверху