Перезапись nginx или внутреннее перенаправление, основной скрипт неизвестен
Я конвертирую в nginx из Apache. Рассматриваемая заявка выглядит следующим образом
/contentlibrary_js /contentlibrary_js/app/index.php -> одностраничное приложение ajax /contentlibrary_js/pagecreator/index.php -> серверная часть приложения codeigniter
Я надеюсь, что один блок сервера будет обрабатывать как запросы к внешнему интерфейсу, так и запросы к внутренним.
В следующей конфигурации я получаю "цикл перезаписи или внутреннего перенаправления при внутреннем перенаправлении на"/index.php"в моем журнале ошибок nginx.
Я попытался добавить второй блок местоположения для обработки запросов к файлу pagecreator / index.php, но затем приложение зависает в ожидании ответа, и я получаю сообщение "FastCGI sent in stderr: " Основной сценарий неизвестен "при чтении заголовка ответа из апстрима". в журнале ошибок.
Любые предложения, спасибо
server {
server_name contentlib.dev;
#access_log logs/leonardo.access.log main;
root /Users/acasanova/projects/mednet/contentlibrary_js;
index index.html index.htm index.php;
try_files $uri $uri/ /pagecreator/index.php /index.php /index.php$uri /index.php?$args;
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# Codeigniter
# location /pagecreator/{
# try_files $uri $uri/ index.php$request_uri;
# #root /Users/acasanova/projects/mednet/contentlibrary_js/pagecreator;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /Users/acasanova/projects/mednet/contentlibrary_js/pagecreator$fastcgi_script_name;
# include fastcgi_params;
# }
location ~ [^/]\.php(/|$) { #GC
# try_files $uri $uri/ /index.php$uri /index.php?$args;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
1 ответ
Кажется, мне было трудно понять, что директива try_file позволит получить доступ к другим блокам местоположения. Я продолжал думать, что если запрос соответствует местоположению, то это единственный блок местоположения, который нужно обработать.
server {
server_name contentlib.dev;
access_log logs/contentlibrary_access.log;
root /Users/acasanova/projects/mednet/contentlibrary_js;
#default_type text/html;
index index.php index.html index.htm;
location /app{
try_files $uri $uri/ /index.php /index.php$uri =404;
root /Users/acasanova/projects/mednet/contentlibrary_js/app;
}
location ~* \.(jpg|jpeg|gif|png|html|css|zip|tgz|gz|rar|doc|xls|pdf|ppt|tar|wav|bmp|rtf|swf|flv|txt|xml|docx|xlsx|js)$ {
try_files $uri $uri/ /index.php$uri =404;
access_log off;
}
location /pagecreator{
try_files $uri /index.php index.php$uri =404;
root /Users/acasanova/projects/mednet/contentlibrary_js/pagecreator;
}
location ~ [^/]\.php(/|$) { #GC
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}