ปัญหา: เมื่อเปิดใช้งาน php-fpm ส่วนหัว cors ที่ตั้งค่าใน .htaccess จะไม่แสดงขึ้นในการตอบสนอง เมื่อปิดใช้งาน php-fpm ส่วนหัวของ cors จะแสดงในการตอบกลับ
การตั้งค่าปัจจุบัน:
เซิร์ฟเวอร์:
- Ubuntu 20.04 บนคลาวด์ Aliyun (ภูมิภาคเซี่ยงไฮ้)
- Apache 2.4 เปิดใช้งานโมดูลส่วนหัว
- php 7.4 พร้อมเปิดใช้งาน php7.4-fpm
ใน .htaccess ฉันได้ตั้งค่า:
ส่วนหัวตั้งค่า Access-Control-Allow-Origin "*" เสมอ
ส่วนหัวตั้งค่า Access-Control-Allow-Headers เสมอ "origin, x-requested-with, content-type"
ส่วนหัวตั้งค่า Access-Control-Allow-Methods เสมอ "PUT, GET, POST, DELETE, OPTIONS"
ใน vhost config ฉันได้ตั้งค่า:
<VirtualHost *:443>
ServerName api.test.com
DocumentRoot /path/to/www
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/www/$1
ErrorLog /path/to/log
CustomLog /path/to/log
<Directory /path/to/www/ >
Options Indexes FollowSymlinks Includes execCGI
AllowOverride All
Require all granted
</Directory>
SSLCErtificateFile /path/to/pem
SSLCertificateKeyFile /path/to/key
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
ถ้าฉันแสดงความคิดเห็นบรรทัด # ProxyPassMatch ....
และรีสตาร์ท apache และ php-fpm ส่วนหัวสำหรับ cors ที่ตั้งค่าใน .htaccess ด้านบนจะแสดงตามที่คาดไว้
อย่างไรก็ตาม หากตั้งค่า php-fpm ใน vhost หลังจากรีสตาร์ท apache และ php-fpm ส่วนหัวที่แสดงรายการใน .htaccess จะไม่ตอบสนอง
การตอบสนองในทั้งสองกรณี (มีและไม่มี php-fpm) ยังคงใช้ได้ รหัส 200 พร้อมข้อความสะท้อนที่ฉันตั้งค่าเป็นเอาต์พุต
ไม่มีการบันทึกข้อผิดพลาด
ฉันไม่เคยพบปัญหานี้ในอินสแตนซ์ AWS หรือเมื่อพัฒนาในสภาพแวดล้อมท้องถิ่นของฉัน
ทุกคนสามารถชี้ให้ฉันเห็นว่า php-fpm ส่งผลกระทบต่อส่วนหัวการตอบสนองได้อย่างไร ฉันทำอะไรผิดพลาดใน vhost / htaccess หรือการตั้งค่า .ini หายไปหรือไม่