Size: a a a

2021 April 20

j

jenia in nginx_ru
php-fpm стоит за nginx. Вот это конфиг. Получаю текст все время File not found.  Подскажите как такое исправить и почему оно так получаетста   ?
https://gist.github.com/evgeniy123/16a6410fe7565fb3145fab9575bcb310
источник

ВМ

Владимир Муковоз... in nginx_ru
if ($request_uri ~ ^/api/(.*)$ ) {
       set $path /$1;
       }
источник

ВМ

Владимир Муковоз... in nginx_ru
что за костыль такой?
источник

ВМ

Владимир Муковоз... in nginx_ru
смените просто root, для этой директории
источник

ВМ

Владимир Муковоз... in nginx_ru
или алиас
источник

j

jenia in nginx_ru
Скопировал из интернета способ когда нужно перенаправлять запросы которые начинаются с  /api
источник

ВМ

Владимир Муковоз... in nginx_ru
источник

j

jenia in nginx_ru
для какой именно ? Где у меня в другом контейнере лежит index.php ?
источник

ВМ

Владимир Муковоз... in nginx_ru
ну нужно указать root в nginx равный руту в контейнере
источник

ВМ

Владимир Муковоз... in nginx_ru
чтобы php корректно скушал файл
источник

КМ

Константин Михеев... in nginx_ru
Всем привет. Помогите, пожалуйста, разобраться с настройкой nginx в докере. Вводные:
PHP приложение https://github.com/marcj/php-rest-service

в документации написано, что нужно использовать такой конфиг для корректной работы:


// edit virtualhost /etc/nginx/conf.d/name_virtualhost_file
server {
.. something params ...
location / {
 include fastcgi_params;
   
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
}

// and add line to /etc/nginx/fastcgi_params
fastcgi_param PATH_INFO $fastcgi_script_name;



Докер настраиваю по https://habr.com/ru/post/519500/

Здесь же указан такой конфиг


server {
   listen 80;
   index index.php index.html;
   server_name project-1.localhost;
   error_log /var/log/nginx/project-1.error.log;
   access_log /var/log/nginx/project-1.access.log combined if=$loggable;
   root /var/www/project-1.ru;

   location / {
       try_files $uri $uri/ /index.php?$query_string;
   }

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       fastcgi_pass php-7.3:9000;
       fastcgi_index index.php;
       include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_script_name;
   }
}


Нужно объединить конфиги, чтобы php приложение заработало корректно.

Итоговый конфиг сейчас такой:


server {
   listen 80;
   index index.php index.html;
   server_name antiperekup.localhost;
   error_log /var/log/nginx/antiperekup.error.log;
   access_log /var/log/nginx/antiperekup.access.log combined if=$loggable;
   root /var/www/antiperekup;

   location /api/ {
       rewrite ^/api/(.*)$ /api.php$1;
   }

   location ~ /api/(.+)\.php {
       fastcgi_pass php-7.3:9000;
       fastcgi_split_path_info ^(.+\.php)(.*)$;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       fastcgi_param X_REQUEST_ID $request_id;
       fastcgi_param X_FORWARDED_PROTO $scheme;
       fastcgi_read_timeout 180;
       fastcgi_send_timeout 180;
       include fastcgi_params;
   }

   location ~ \.php {
       fastcgi_pass php-7.3:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       include fastcgi_params;
   }
}


Проблема: GET запрос http://antiperekup.localhost/api/v1/test_report/?key=1321s5d6asd54 выдает File not found. Если прописать явно api.php http://antiperekup.localhost/api.php/v1/test_report/?key=1321s5d6asd54 , то выводится сообщение из api.php , но в код библиотеки не попадает:


Server::create('/v1/', new \Api)
->addGetRoute('test_report', 'testReport')
->run();


В методе testReport просто print_r, который не отрабатывает. Когда обращаюсь к http://antiperekup.localhost/api/v1/test_report/?key=1321s5d6asd54 , то в error.log вижу следующее:
2021/04/20 12:07:03 [error] 30#30: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.22.0.1, server: antiperekup.localhost, request: "GET /api/v1/test_report/?key=1321s5d6asd54 HTTP/1.1", upstream: "fastcgi://172.22.0.2:9000", host: "antiperekup.localhost"
источник

j

jenia in nginx_ru
location /api/  {
      root /app/public;

….

тоже самое к сожалению  ...
источник

ВМ

Владимир Муковоз... in nginx_ru
покажи пример запроса и какой путь до файла который должен его принять
источник

j

jenia in nginx_ru
https://site.com/api/public/sound/voices

/app/public/index.php
в другом контейнере (php-fpm)
источник

ВМ

Владимир Муковоз... in nginx_ru
ну так))
источник

ВМ

Владимир Муковоз... in nginx_ru
то есть запрос пришедший в /api/ должен попасть в него?)
источник

ВМ

Владимир Муковоз... in nginx_ru
а вы как настроили
источник

ВМ

Владимир Муковоз... in nginx_ru
в доки загляни
источник

ВМ

Владимир Муковоз... in nginx_ru
что я кинул
источник

ВМ

Владимир Муковоз... in nginx_ru
источник