Score:1

NGINX + PHP, $_POST data comes empty after passing through nginx

gb flag

Here is the issue, when i try to use NGINX (1.18) and PHP (7.4.3) with FPM (lastest from APT) i run into an issue where all of the POST data from my script returns as null

$_POST['name'];
// console after post: name is undefined

The URL i tried posting too:

/posts/new/post

(the user goes on /posts/new to make a new post, the $_POST request goes to /posts/new/posts)

here is my nginx config:

server {
        root /forum/;
        index index.php;
        server_name ***.net;
        location / {
                try_files $uri $uri/ =404;
        }
        location /posts/ {
                    try_files $uri $uri/ @rewrites;
        }
        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        location @rewrites {
         rewrite ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/***.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/***.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

when i was building these scripts, they worked fine on the PHP built in testing server.

Also note: this server is behind a proxy, but this was tested behind the proxy (going to 192.168.x.x)

edit: also i forgot to state that the $_POST is via a XMLHTTP post via $.ajax from Jquery.

edit 2: Apon looking at the Headers Sent via the Script (on FPM) no post data is sent, but when using the testing server, the post data is sent

Score:1
gb flag

after about 2 hours of useless looking, a simple fix: change

        location / {
                try_files $uri $uri/ =404;
        }

to

        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

what caused this issue:

when running a query against an INDEX / (without /index.php) the query was not passed onto the /index.php, so all $_POST returned as NULL

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.