Проблема: Когда 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 я установил:
<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>
Если я прокомментирую строку # ПроксиПассматч ....
и перезапустите apache и php-fpm, заголовки для cors, установленные в .htaccess выше, отображаются, как и ожидалось.
Однако, если в vhost установлен php-fpm, после перезапуска apache и php-fpm заголовки, перечисленные в .htaccess, в ответ не предоставляются.
Ответ в обоих случаях (с php-fpm и без него) все еще действителен, код 200, с некоторым эхо-текстом, который я установил в качестве вывода.
Ошибки не зарегистрированы.
Я никогда не сталкивался с этой проблемой ни в инстансах AWS, ни при разработке в моей локальной среде.
Может ли кто-нибудь указать мне, как php-fpm влияет на заголовки ответов, я делаю что-то неправильно в vhost/htaccess или отсутствуют настройки .ini?