我的nginx版本:nginx/1.4.6
我在为多个子域启用 CORS 时遇到问题。我检查了https://gist.github.com/algal/5480916和http://rustyrazorblade.com/post/2013/2013-10-31-cors-with-wildcard-domains-and-nginx/但两种解决方案都没有不适合我。
它看起来像正则表达式
if ($http_origin ~* (.*\.mydomain.com)) {
set $cors "true";
}
Run Code Online (Sandbox Code Playgroud)
不匹配且 $cors 未设置为“true”,因此不会执行 add_header 'Access-Control-Allow-Origin' "$http_origin"。
我也试过正则表达式
$http_origin ~* (https?://.*.mydomain.com)
或者
$http_origin ~* https?://.*.mydomain.com
但在任何一种情况下,正则表达式都不匹配,$cors 永远不会设置为“true”。
我错过了什么?
我的 nginx 配置 - 花括号中的域名(正在被 Ansible 取代):
upstream varnish {
server localhost:80;
}
server {
listen 443 default;
server_name {{vhost}};
ssl on;
ssl_certificate /etc/ssl/certs/ssl.{{domain}}.crt;
ssl_certificate_key /etc/ssl/private/{{domain}}.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers on;
# workaround remote exploit. Fixed in 1.5.0, 1.4.1
# …Run Code Online (Sandbox Code Playgroud) nginx ×1