nginx 正则表达式与捕获错误

nginx 正则表达式与捕获错误

我正在尝试使用正则表达式捕获函数来创建一个Access-Control-Origin header

因此,您有两个主要捕获,一个用于网站地址(如http://example.com),另一个用于端口用户(例如:4200)。

这个想法是有这个标题:Origin: http://example.com:4200

我的捕获对于第一种情况有效,但是它似乎不喜欢这个端口。

我得到的Origin : http://example.com:不是Origin: http://example.com:4200

这是我的 nginx 配置:

我的猜测是,Access-Control-Allow-Origin不理解数值。

    if ($request_uri ~ ^/api/blabla/*){
          set $public "1";
    }

    if ($http_origin ~* (https?:\/\/[^/]*(localhost|\.example.com))(:[0-9]+)?[^\w\d]) {
         set $public "${public}1";
    } 
    if ($public = "11"){
         set $http_origin_regex $1$4;
         add_header 'Access-Control-Allow-Origin' "$http_origin_regex";
    }

答案1

看着http://marcel.zurreck.com/enable-cross-origin-requests-cors-nginx/

使用他们的语法我得到:

location ~ ^/api/blabla/ {
    if ($http_origin ~* (https?://[^/]*(localhost|\.example\.com)(:[0-9]+)?)) {
        add_header 'Access-Control-Allow-Origin' "$http_origin";
    }
}

相关内容