Настройка CodeIgniter под NGINX
Начнем издалека.
Допустим у нас следующая структура директорий:
/nginx
создадим папку для системных файлов Codeigniter
/CI
Кладем туда system
/CI/system
Теперь нам будет удобно обновлять CI не затрагивая проекты. И из weba не будет доступа к системным файлам. Создаем директорию для наших проектов:
/www
Директорию проекта
/www/mp3tter.com
И кладем внeтрь содержимое папки application и файл index.php.
Теперь собственно можно приступить к конфигам nginx и CI
Конфиг nginx:
<?php server {
listen 8079;
server_name localhost:8079;
location / {
root ..wwwmp3tter.com;
index index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .php$ {
root ..wwwmp3tter.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 180;
fastcgi_ignore_client_abort on;
fastcgi_index index.php;
fastcgi_buffers 300 5K;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
include fastcgi_params;
}
if ($request_filename !~ (js|css|ico|gif|jpg|png|images|.html|robots.txt|index.php*) ) {
rewrite ^/(.*)$ /index.php/$1 last;
}
location ~ /index.php/ {
root D:wnmpwwwmp3tter.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 180;
fastcgi_ignore_client_abort on;
fastcgi_index index.php;
fastcgi_buffers 300 5K;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
include fastcgi_params;
}
}?>
localhost:8079; - меняем на имя домена. Будьте бдительны, если DNS ещё неотресолвился - nginx будет грязно ругаться.
Коротко - статичные файлы отдаем nginxом. Просто php - обрабатываем без CI.
Всё что с /index.php/ - передаем на управление кодеигнайтеру.
Теперь index.php:
if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") error_reporting(E_ALL);
else error_reporting(0);
// репортим об ошибках только на локале
$system_folder = "../../CI/system";
- путь относительно текущей директории
$application_folder = "../../www/mp3tter.com";
- путь относительно системной папки ci
Теперь лезем в config.php
$config['base_url'] = "$_SERVER['HTTP_HOST'];
- домен берем автоматом
$config['index_page'] = "";
- строку index.php - мы задали для корня и из путей вырезали регуляркой нгинкса
$config['uri_protocol'] = "REQUEST_URI";
Авто менем на URI
$config['cookie_domain'] = ".".$_SERVER['HTTP_HOST'];
В домен для кук добавляем точку ведущую, чтобы и для www и для прямого адреса куки работали.
Всё собственно.