Я пытаюсь запустить сайт на nginx на базе codeigniter. Некоторые части работают, но некоторые не работают. Я заметил в журналах доступа, что index.php иногда имеет две косые черты в конце вместо одной. Я также не могу правильно получить свой пост (возвращает 404).
моя конфигурация для nginx выглядит следующим образом для моего сайта по умолчанию (он единственный на сервере)
server {
server_name xxx.com;
return 301 $scheme://www.xxx.com$request_uri;
}
server {
root /srv/www/xxx;
index index.php index.html index.htm;
server_name www.xxx.com;
# removes trailing "index" from all controllers
if ($request_uri ~* index/?$)
{
rewrite ^/(.*)/index/?$ /$1 permanent;
}
if (!-e $request_filename)
{
rewrite ^(.*)$ /index.php/$1 last;
break;
}
location \ {
try_files $uri $uri/ @no_php_ext;
}
# catch all
error_page 404 /index.php;
location ~ \.(php)$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/xxx/$fastcgi_script_name;
include fastcgi_params;
#fastcgi_read_timeout 900;
}
location @no-php-ext {
rewrite ^(.*)$ index.php/$1 last;
}
}
Я пробовал много изменений в перезаписи, но безуспешно. Любая помощь очень ценится.
Этот сработал для меня. Все страницы возвращаются с 200. У меня все еще есть проблемы с заданиями cron, но это следует задать в другом вопросе.
server {
root /srv/www/xxx;
index index.php index.html index.htm;
server_name www.xxx.com;
access_log /var/log/nginx/xxx.access.log;
error_log /var/log/nginx/xxx.error.log;
location = / {
try_files $uri $uri/ /index.php;
rewrite ^/(.*)$ /index.php;
}
location / {
# Check if a file or directory index file exists, else route it to index.php.
try_files $uri $uri/ /index.php;
location = /index.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
location ~ \.php$ {
return 444;
}
}