У меня есть приложение codeigniter со следующей структурой каталогов
<HOME>
|_ <web>
| |_<API>
| |_index.php
|_<admin>
У разработчиков есть index.html в каталогах, и. Файлы codeigniter и сервисы, развернутые разработчиками, находятся в каталогах. Разработчики получают доступ к службам, добавляя имя службы к домену следующим образом http: //mydomain/web/API/index.php/v1/GetRoles Имя хоста настраивается как переменная BASE PATH в файле javascript.
Это приложение обслуживается NGINX под управлением fast-cgi.
Хотя HTML-страницы загружаются, данные не загружаются. Поэтому мы попытались получить доступ к функциям, набрав URL-адрес в браузере (http: //mydomain/web/API/index.php/v1/GetRoles). Получаем ошибку 404 Not Found. Журналы ошибок содержат следующие записи
2016/05/20 16:14:57 [error] 2127#0: *232 FastCGI sent in stderr: "Unable to open primary script: /home/myname/public_html/domainname/public/projectname/index.php (No such file or directory)" while reading response header from upstream, client: 14.141.163.46, server: mydomain.com, request: "GET /web/API/v1/get/Common/GetActivities HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "mydomain.com"
Сервер должен искать index.php в /home/myname/public_html/domainname/public/projectname/web/API/index.php, а не искать его в WEB ROOT.
Моя конфигурация NGINX выглядит следующим образом
server {
listen mydomain.com;
server_name mydomain.com;
root /home/myname/public_html/domainname/public/projectname;
keepalive_timeout 70;
access_log /home/myname/public_html/domainname/log/access.log;
error_log /home/myname/public_html/domainname/log/error.log;
gzip_static on;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on the php-fpm socket
location ~ \.php$ {
#try_files $uri =404;
#fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}
Я не могу понять, почему NGINX ищет index.php в WEB ROOT вместо того, чтобы загружать все, что мы вводим в URL. С нетерпением ждем ответа от всех, кто сталкивался с подобной проблемой.
Насколько я понимаю из вашего запроса, вы пытаетесь получить /web/API/v1/get/Common/GetActivities
, который не является настоящей папкой. Вы могли бы сделать местоположение /web/API/v1/get/Common/GetActivities
с корнем /home/myname/public_html/domainname/public/projectname/web/API
или измените путь запроса на /web/API/index.php