我使用Nginx作为我的后端服务器的代理。 而我的应用程序将存储所有引用url到数据库。 为了减less数据库的空间,我想在某些情况下忽略一些引用者。
如果uri包含一些string,我想删除一些http_referer。
由于nginx不能在“if {…}”中使用[proxy_set_header Referer“”]
所以,我尝试使用“地图”,但它仍然不起作用。 这是我的configuration
http { .... map $http_referer $ref { default $http_referer; } .... } server { ...... if ($request_uri ~ .*XXXXXXX.*) { set $ref ""; } proxy_set_header Referer $ref; ...... }
难道我们不能在“if”里面改变全局variables吗?
你可以试试这个代码
map $http_referer $ref { default $http_referer; ~*(badref.com) 1; }
并到服务器部分
if ($ref = '1') { set $ref ""; } proxy_set_header Referer $ref;
为了在一种情况下检查$ request_uri和$ http_referer,你可以使用
map $http_referer$request_uri $ref { default $http_referer; ~*.*badref.com.*XXXXXXX.* ""; } proxy_set_header Referer $ref;