Как настроить два приложения Codeigniter в двух каталогах в Nginx, FastCGI

У меня есть особое требование для установки двух приложений на основе CodeIgniter на одном сервере Nginx, указывая на domain.com/ а также domain.com/site2,

До сих пор я попробовал различные комбинации конфигурации без какой-либо удачи. Большую часть времени это дает мне ошибку 404.

Ниже приведен мой последний файл конфигурации.

server {
listen       80;
server_name  domain.com www.domain.com;
root   /var/www/domain.com/;

location / {
root   /var/www/domain.com/site1/public/;
index index.html index.php
access_log /var/www/domain.com/site1/logs/access.log;
error_log /var/www/domain.com/site1/logs/errors.log;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass   127.0.0.1:9000;
fastcgi_param  SCRIPT_FILENAME /var/www/domain.com/main/public$fastcgi_script_name;
fastcgi_param PATH_INFO       $fastcgi_path_info;
}
}

location /site2{
root /var/www/domain.com/site2/public/;
index index.html index.php;
access_log /var/www/domain.com/site2/logs/access.log;
error_log /var/www/domain.com/site2/logs/errors.log;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass   127.0.0.1:9000;
fastcgi_param  SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
}
}

я использовал alias на месте root без доменной части. Все еще не повезло.

Однако, когда я использую alias а также try_files $uri $uri/ /site2/site2/public/index.php?$query_string внутри блока местоположения он загружает сайт без ресурсов, таких как css / js.

Не могли бы вы показать мне, что не так в моей конфигурации.

2

Решение

С помощью alias с fastcgi требует от вас использовать $request_filename вычислить правильное значение для SCRIPT_FILENAME,

location значение и alias значение должно либо заканчиваться на / или не заканчивается / добиться правильной замены.

location /site2 {
alias /var/www/domain.com/site2/public;
index index.html index.php;
access_log /var/www/domain.com/site2/logs/access.log;
error_log /var/www/domain.com/site2/logs/errors.log;

if (!-e $request_filename) { rewrite ^ /site2/index.php last; }

location ~ \.php$ {
if (!-f $request_filename) { return 404; }

include fastcgi_params;
fastcgi_pass   127.0.0.1:9000;
fastcgi_param  SCRIPT_FILENAME  $request_filename;
}
}

Используйте первый if блок для имитации try_files утверждение в вашем вопросе. Избегать использования alias а также try_file из-за Эта проблема.

Используйте второе if блок, чтобы избежать передача неконтролируемых запросов в PHP.

Увидеть это предостережение на использование if,

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector