2013-05-15 2 views
0

Я новичок в nginx. Я переношу свой сервер с apache на nginx, но мои многочисленные проекты на основных PHP-сайтах CodeIgniter работают отлично, но CodeIgniter не работает.Nginx CodeIgniter не работает

Мой образец URL, как это:

http://example.com/track/ 

это перенаправление:

http://example.com/track/index.php/sessions/login 

но он возвращает 404 Not Found.

мой сервер настроить так:

server { 
    listen  80; 
    server_name 192.168.0.80; 

    location/{ 
     root /usr/share/nginx/html; 
     index index.php index.html index.htm; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 



    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    # 
    location ~ \.php$ { 
     root   /usr/share/nginx/html; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
    } 

    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
    location ~ /\.ht { 
     deny all; 
    } 
} 

мой файл журнала ошибок, как этот

2013/05/15 10:21:37 [error] 2474#0: *3 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.80" 
2013/05/15 10:21:37 [error] 2474#0: *1 FastCGI sent in stderr: "Unable to open primary script: /usr/share/nginx/html/index.php (No such file or directory)" while reading response header from upstream, client: 192.168.0.11, server: 192.168.0.80, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.0.80" 
2013/05/15 10:22:05 [error] 2474#0: *1 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80" 
2013/05/15 10:26:46 [error] 2474#0: *5 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80" 
2013/05/15 10:28:33 [error] 2474#0: *7 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80" 
2013/05/15 10:29:59 [error] 2497#0: *1 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80" 

Что случилось? Я сделал поиск в google, но не работал отлично.

+0

Хорошо, так что пара быстрых вопросов, Является ли это локальным сервером? и этот проект codeIgniter работает в подпапке вашего корневого сервера ?, потому что, если это так, то оно несколько меняет несколько вещей. –

+0

это локальный сервер. Я использую CentOS для & codigniter работает на fastcgi.conf файл подпапку –

ответ

1

Проверьте эту ссылку, исправьте свои проблемы с переписыванием.
Если у вас есть дополнительные вопросы, вы можете задать вопрос.
Code igniter for nginx

Edit:
Ok так что есть несколько способов исправить ваше дело, но я опишу ближайший к вашему делу

Если вы собираетесь редактировать в том же файле, Nginx конф так как я думаю, что вы делаете прямо сейчас, то попробуйте добавить этот

location /track { 
    try_files $uri $uri/ /track/index.php; 
} 

не уверен, что если нужна маршрутизации $request_uri добавляется к index.php или нет. И я думаю, вы должны настроить CodeIgniter, чтобы быть в курсе этой подпапки

$config['base_url'] = "192.168.0.80/track" 

Это на самом деле не самый чистый способ сделать эту конфигурацию, я предпочел бы добавить доменное имя в /etc/hosts и создать новый отдельный сервер в nginx.

+0

отсутствующего –

+0

Замените эти две строки с 'fastcgi_pass UNIX: /var/run/php5-fpm.sock;' ' включают fastcgi_params;' –

+0

что-то идет хуже, когда я вызываю этот URL http: //192.168.0.80/track/redirect to http://192.168.0.80 и мой основной проект PHP не работает –

0

Я столкнулся с аналогичной проблемой ранее сегодня: для маршрутизации URI кода необходимо указать переменные REQUEST_URI и SCRIPT_NAME. Многие руководства Nginx/PHP-FPM не определяют переменную SCRIPT_NAME, поэтому вы оказываетесь в результате сбоев маршрутизации. Вам нужно добавить строку, которая выглядит следующим образом:

fastcgi_param SCRIPT_NAME $fastcgi_script_name; 

, а затем вы можете использовать REQUEST_URI в вашем config.php файл и маршрутизации должны работать.

Смежные вопросы