Следующий блок
location / {
if ($http_origin ~* (https?://[^/]*\.example\.com(:[0-9]+)?)) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
}
try_files $uri $uri/ /index.php?$args;
}
… Вызывает ошибку 404, поскольку приведенный выше код никогда не достигает try_files
директива, поэтому:
Связано ли это с IfIsEvil nginx?
Если да, то есть другой способ проверить http_origin
не используя оператор if?
Я пробовал это с nginx> 1.4 (1.4.6, 1.7, 1.7.8).
я хотел бы использовать map
:
map $http_origin $cors_header {
default "";
"~^https?://[^/]+\.example\.com(:[0-9]+)?$" "$http_origin";
}
server {
...
location / {
add_header Access-Control-Allow-Origin $cors_header;
try_files $uri $uri/ /index.php;
}
...
}