У меня есть сайт www.example.com, использующий пользовательскую среду PHP и CMS, которая загружает совершенно другую среду.Первоначально он был на apache2, а сейчас я пытаюсь перейти на nginx.Домен www загружает файл, но когда дело доходит до загрузки кодовой базы в подкаталоге, он просто возвращает 404 на моем nginx.Если я переключаюсь обратно на apache2, он загружается нормально.Вот мой конфиг, который я в основном искал из ответов на другие запросы stackoverflow:
server {
listen 80 default;
client_max_body_size 256M;
access_log /var/log/nginx/site.access.log;
root /site;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/site_php_errors.log";
fastcgi_buffers 32 32k;
fastcgi_buffer_size 64k;
include fastcgi_params;
}
location /cms {
root /cms/;
}
location ~ /cms/.+\.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/site_php_errors.log";
fastcgi_buffers 32 32k;
fastcgi_buffer_size 64k;
include fastcgi_params;
}
}
Я пытался этот ответ , но мне не повезло.У меня должна быть какая-то базовая конфигурация, неправильно настроенная, но я не могу понять, какая именно..Htaccess в / cms выглядит следующим образом:
RewriteEngine On
RewriteBase /cms
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
Редактировать : обновил конфигурацию, используя этот пример , и теперь я могу войти в CMS, но этонемедленно входит в цикл перенаправления 302, который я не могу понять, почему это происходит:
server {
listen 80 default_server;
# client_max_body_size 256M;
root /application;
index index.php;
server_name _;
# access_log /var/log/nginx/application.access.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /cms {
alias /application/cms;
try_files $uri $uri/ @cms;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass php-fpm:9000;
}
}
location @cms {
rewrite /cms/(.*)$ /cms/index.php?/$1 last;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 32 32k;
fastcgi_buffer_size 64k;
}
}