Всем привет. Помогите, пожалуйста, разобраться с настройкой 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"

2 ответов

17 просмотров

запрос к http://antiperekup.localhost/api/v1/test_report/?key=1321s5d6asd54 по конфигу уходит в location ~ \.php “обращается” к файлу /var/www/antiperekup/api.phpv1/test_report/?key=1321s5d6asd54 (без / между api.php и урл-е при реврайте в location / его теряем)

K-M Автор вопроса
Anton
запрос к http://antiperekup.localhost/api/v1/test_...

Спасибо, но не совсем понимаю, как исправить эту ситуацию

Похожие вопросы

Обсуждают сегодня

1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
Hi! Could you please upvote my new notebook? thanks a lot. https://www.kaggle.com/code/melissamonfared/anime-character-generation-dsgan-gan
məru
4
upvote plz https://www.kaggle.com/code/bassetkerouche/swapping-face?scriptVersionId=207300096
benkerrouche Statoinary
1
-- Привет всем. -- Есть csv, проблема в том что он содержит очень много повторов по столбцам и по строкам. -- Решил перекинуть это в базу данных, чтобы было проще. Но я не ша...
Oleg Ivanov
1
Как считаете - вопрос на собесе: «Как быстрее всего запустить ec2 машину в aws (в чистом аккаунте) и показать вывод от любой команды с нее» не очень ли сложный для условного м...
Sergey
50
Господа, у меня вопрос. Что вообще такое этот ваш data science и data scientists? А то гуглю, а мне какую-то расплывчатую фигню говорят.
Inkosta
44
Исходя из ваших комментариев, получается, что чтобы получить марты в CH из данных в PG, неправильно тянуть сырые данные в CH и там их обрабатывать, лепить справочники и джойни...
unhingedlunatic
42
Hi could you please help me with my two new projects? https://www.kaggle.com/code/hesankazemnia/rice-image-classification-cnn-pytorch https://www.kaggle.com/code/hesankazemnia...
Hesan
6
hi, Can you upvote? https://www.kaggle.com/code/durjoychandrapaul/rag-q-a-system-by-langchain-huggingface-for-pdf?scriptVersionId=204704280
A
1
Could you upvote and comment please? https://www.kaggle.com/code/tatianapetrushkevich/beginner-images https://www.kaggle.com/code/tatianapetrushkevich/python-for-beginners1 ...
Tazziyana
7
Карта сайта