Настройка 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'] = "http://".$_SERVER['HTTP_HOST'];
- домен берем автоматом

$config['index_page'] = "";
- строку index.php - мы задали для корня и из путей вырезали регуляркой нгинкса

$config['uri_protocol'] = "REQUEST_URI";
Авто менем на URI

$config['cookie_domain'] = ".".$_SERVER['HTTP_HOST'];
В домен для кук добавляем точку ведущую, чтобы и для www и для прямого адреса куки работали.
Всё собственно.

 (0) Написал recoilme, 2009-08-05 12:08:48  ответить