Рейтинг:1

NGINX + PHP, данные $_POST становятся пустыми после прохождения через nginx

флаг gb

Вот в чем проблема: когда я пытаюсь использовать NGINX (1.18) и PHP (7.4.3) с FPM (последний из APT), я сталкиваюсь с проблемой, когда все данные POST из моего скрипта возвращаются как null

$_POST['имя'];
// консоль после сообщения: имя не определено

URL-адрес, который я тоже пытался опубликовать:

/сообщения/новый/сообщение

(пользователь переходит в /posts/new, чтобы создать новую публикацию, запрос $_POST отправляется в /posts/new/posts)

вот мой конфиг nginx:

сервер {
        корень /форум/;
        индекс index.php;
        имя_сервера ***.net;
        место расположения / {
                try_files $uri $uri/ =404;
        }
        местоположение /сообщения/ {
                    try_files $uri $uri/ @rewrites;
        }
        # передать PHP-скрипты на сервер FastCGI
        #
        расположение ~ \.php$ {
                включить фрагменты/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        местоположение @rewrites {
         переписать ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id;
        }

    слушать [::]:443 ssl ipv6only=on; # под управлением Certbot
    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/***.net/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/***.net/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot

}

когда я создавал эти скрипты, они отлично работали на PHP, встроенном в тестовый сервер.

Также обратите внимание: этот сервер находится за прокси, но это было протестировано за прокси (переход на 192.168.x.x)

редактировать: также я забыл указать, что $_POST осуществляется через сообщение XMLHTTP через $.ajax из Jquery.

редактировать 2: при просмотре заголовков, отправленных через скрипт (на FPM), данные сообщения не отправляются, но при использовании тестового сервера данные сообщения отправляются

Рейтинг:1
флаг gb

примерно через 2 часа бесполезных поисков простое исправление: изменение

        место расположения / {
                try_files $uri $uri/ =404;
        }

к

        место расположения / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

что вызвало эту проблему:

при выполнении запроса к ИНДЕКСУ / (без /index.php) запрос не был передан на /index.php, так что все $_POST вернулся как НОЛЬ

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.