นี่คือปัญหา เมื่อฉันพยายามใช้ NGINX (1.18) และ PHP (7.4.3) กับ FPM (ล่าสุดจาก APT) ฉันพบปัญหาที่ข้อมูล POST ทั้งหมดจากสคริปต์ของฉันส่งคืนเป็นค่าว่าง
$_POST['ชื่อ'];
// คอนโซลหลังจากโพสต์: ชื่อไม่ได้กำหนด
URL ที่ฉันพยายามโพสต์ด้วย:
/โพสต์/ใหม่/โพสต์
(ผู้ใช้ดำเนินการต่อ /posts/new เพื่อสร้างโพสต์ใหม่ คำขอ $_POST ไปที่ /posts/new/posts)
นี่คือการกำหนดค่า nginx ของฉัน:
เซิร์ฟเวอร์ {
รูท /ฟอรั่ม/;
ดัชนี index.php;
server_name ***.net;
ที่ตั้ง / {
try_files $uri $uri/ =404;
}
สถานที่ /posts/ {
try_files $uri $uri/ @rewrites;
}
# ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI
#
ตำแหน่ง ~ \.php$ {
รวมตัวอย่าง/fastcgi-php.conf;
fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
}
ตำแหน่ง @rewrites {
เขียนใหม่ ^/posts/(?<id>[a-zA-Z0-9]+)$ /posts/?post=$id;
}
ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย 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) จะไม่มีการส่งข้อมูลโพสต์ แต่เมื่อใช้เซิร์ฟเวอร์ทดสอบ ข้อมูลโพสต์จะถูกส่ง