mitris Опубликовано 20 ноября, 2012 Жалоба Поделиться Опубликовано 20 ноября, 2012 Добрый день!Возникла потребность развернуть Simpla CMS на сервере под nginx'ом. Все гугления по данному вопросу приводили ни к чему. Один конфиг кривой, в другом что-то не учтено, в третем еще какая-то лажа.В общем после нескольких часов разнообразных манипуляций получился работоспособный конфиг, который охватывает все настройки от апача. Хочу поделится им с вами, возможно кому-то пригодится.Так же хотелось бы услышать ваше мнение насчет данного конфига и, возможно, какие-то замечания или предложения по его усовершенствованию.пс. Данный конфиг идет как отдельный файл для хоста.ппс. Если кому-то он реально пригодтся - буду очень рад знать, что мой труд востребовался upd. Simpla CMS 2.1.5server { listen 80; server_name example.com; root /var/www/example.com; 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 192.168.0.0/16; deny all; } location ^~ /simpla/ { auth_basic "Administrator Login"; auth_basic_user_file $document_root/simpla/.htpasswd; try_files $uri $uri/ /index.php; index index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; 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)(/.+)$; include /etc/nginx/fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; 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 (!-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; }} Цитата Ссылка на сообщение Поделиться на другие сайты
kosix Опубликовано 9 февраля, 2013 Жалоба Поделиться Опубликовано 9 февраля, 2013 Отличная работа, все великолепно )Единственный момент, почему-то не грузит картинки в товарах...Решение найдено: location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { if (!-e $request_filename){ rewrite ^/files/products/(.+) /resize/resize.php?file=$1&token=$query_string; } } Цитата Ссылка на сообщение Поделиться на другие сайты
pif Опубликовано 15 апреля, 2013 Жалоба Поделиться Опубликовано 15 апреля, 2013 Отличное решение, спасибо! Единственная проблема возникает с модулями оплаты. При обращении, например, к /payment/Qiwi/callback.php - ошибка 403 с [error] 24972#0: *36213 access forbidden by rule, client: 128.68.27.129, server: ******.ru, request: "GET /payment/Qiwi/callback.php?order=30 Что в конфиге поправить чтобы такие переходы обрабатывались корректно? Цитата Ссылка на сообщение Поделиться на другие сайты
pif Опубликовано 22 апреля, 2013 Жалоба Поделиться Опубликовано 22 апреля, 2013 Сам спросил, сам ответил. В приведённом решении строчкой location ~* ^/(api|cache|compiled|config|design/(.*)/html|payment|Smarty|view)/(.*) { deny all; } запрещается директория /payment/. Если убрать из конфига эту строчку, скрипты оплаты обрабатываются в общем порядке. Цитата Ссылка на сообщение Поделиться на другие сайты
larry7 Опубликовано 20 января, 2014 Жалоба Поделиться Опубликовано 20 января, 2014 Загрузил конфигурацию. Почему-то при попытке открыть сайт файл index.php сохраняется на локальный комп) Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 20 января, 2014 Жалоба Поделиться Опубликовано 20 января, 2014 пхп не подвязан значит Цитата Ссылка на сообщение Поделиться на другие сайты
larry7 Опубликовано 27 января, 2014 Жалоба Поделиться Опубликовано 27 января, 2014 Отличная работа, все великолепно )Единственный момент, почему-то не грузит картинки в товарах...Решение найдено: location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { if (!-e $request_filename){ rewrite ^/files/products/(.+) /resize/resize.php?file=$1&token=$query_string; } }так картинки грузит, а вот в админке при попытке загрузить из интернета картинки не загружаются, только с локального компа...как починить можно? Цитата Ссылка на сообщение Поделиться на другие сайты
larry7 Опубликовано 27 января, 2014 Жалоба Поделиться Опубликовано 27 января, 2014 Навороты с rule26 предлагается заменить на следующие 2 строки по порядку:rewrite ^/([^/]+)/?$ /index.php?module=PageView&page_url=$1;rewrite ^/?$ /index.php?module=MainView&page_url=; Цитата Ссылка на сообщение Поделиться на другие сайты
shesternin Опубликовано 28 июня, 2014 Жалоба Поделиться Опубликовано 28 июня, 2014 Решил проблему через роутинг в index.php: // Routing $url = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : $_SERVER['REQUEST_URI']; if ( strpos($url, '?') ) { $url = substr($url, 0, strpos($url, '?')); } if ( preg_match( '/catalog\/([^\/]+)\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductsView'; $_GET['category'] = $matches[1]; $_GET['brand'] = $matches[2]; } else if($url == '/'){ $_GET['module'] = 'MainView'; }else if ( preg_match( '/catalog\/(.+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductsView'; $_GET['category'] = $matches[1]; } else if ( preg_match( '/products\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductView'; $_GET['product_url'] = $matches[1]; } else if ( preg_match( '/goods\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductView'; $_GET['product_url'] = $matches[1]; } else if ( preg_match( '/brands\/([^\/]+)\/page_([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductsView'; $_GET['brand'] = $matches[1]; $_GET['page'] = $matches[2]; } else if ( preg_match( '/brands\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductsView'; $_GET['brand'] = $matches[1]; } else if ( preg_match( '/blog\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'BlogView'; $_GET['url'] = $matches[1]; } else if ( preg_match( '/blog\/?$/', $url, $matches) ) { $_GET['module'] = 'BlogView'; } else if ( preg_match( '/news\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'BlogView'; $_GET['url'] = $matches[1]; } else if ( preg_match( '/news\/?$/', $url, $matches) ) { $_GET['module'] = 'BlogView'; } else if ( preg_match( '/order\/([^\/]+)\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'OrderView'; $_GET['url'] = $matches[1]; $_GET['file'] = $matches[2]; } else if ( preg_match( '/order\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'OrderView'; $_GET['url'] = $matches[1]; } else if ( preg_match( '/order\/?$/', $url, $matches) ) { $_GET['module'] = 'OrderView'; } else if ( preg_match( '/cart\/remove\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'CartView'; $_GET['delete_variant'] = $matches[1]; } else if ( preg_match( '/cart\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'CartView'; $_GET['add_variant']= $matches[1]; } else if ( preg_match( '/cart\/?$/', $url, $matches) ) { $_GET['module'] = 'CartView'; } else if ( preg_match( '/search\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductsView'; $_GET['keyword'] = $matches[1]; } else if ( preg_match( '/contact\/?$/', $url, $matches) ) { $_GET['module'] = 'FeedbackView'; } else if ( preg_match( '/user\/register\/?$/', $url, $matches) ) { $_GET['module'] = 'RegisterView'; } else if ( preg_match( '/user\/?$/', $url, $matches) ) { $_GET['module'] = 'UserView'; } else if ( preg_match( '/user\/login\/?$/', $url, $matches) ) { $_GET['module'] = 'LoginView'; } else if ( preg_match( '/user\/logout\/?$/', $url, $matches) ) { $_GET['module'] = 'LoginView'; $_GET['action'] = 'logout'; } else if ( preg_match( '/user\/password_remind\/?$/', $url, $matches) ) { $_GET['module'] = 'LoginView'; $_GET['action'] = 'password_remind'; } else if ( preg_match( '/user\/password_remind\/([^\/]+)\/?$/', $url, $matches) ) { $_GET['module'] = 'LoginView'; $_GET['action'] = 'password_remind'; $_GET['code'] = $matches[1]; } else if ( preg_match( '/search\/?$/', $url, $matches) || preg_match( '/products\/?$/', $url, $matches) ) { $_GET['module'] = 'ProductsView'; } else { preg_match( '/([^\/]+)\/?$/', $url, $matches); $_GET['module'] = 'PageView'; $_GET['page_url'] = $matches[1]; } Цитата Ссылка на сообщение Поделиться на другие сайты
yakutec Опубликовано 27 января, 2015 Жалоба Поделиться Опубликовано 27 января, 2015 (изменено) Добавлю свои пять копеек. В текущей версии Simpla пароль для админки находится в файле .passwd, соответсвенно нужно заменить строкуauth_basic_user_file $document_root/simpla/.htpasswd;наauth_basic_user_file $document_root/simpla/.passwd; Изменено 27 января, 2015 пользователем yakutec Цитата Ссылка на сообщение Поделиться на другие сайты
Person Опубликовано 15 февраля, 2015 Жалоба Поделиться Опубликовано 15 февраля, 2015 ЗдравствуйтеКак решили проблему с сохранениемтак картинки грузит, а вот в админке при попытке загрузить из интернета картинки не загружаются, только с локального компа...как починить можно?Стоит nginx + apache2спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 12 марта, 2017 Жалоба Поделиться Опубликовано 12 марта, 2017 (изменено) Решил проблему через роутинг в index.php: // Routing $url = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : $_SERVER['REQUEST_URI']; if ( strpos($url, '?') ) { $url = substr($url, 0, strpos($url, '?')); }age_url'] = $matches[1]; } я правильно понимаю -- решение дял php-fpm? То есть тогда, когда нет возможности через htaccess? Изменено 12 марта, 2017 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.