nginx读取cookie的方法
How to read cookie in nginx
我是 UI 编程和 nginx 的新手。对不起,如果这个问题很愚蠢。我也尝试了与此类似的 Whosebug 问题中出现的几乎所有答案,但没有任何帮助我解决这个问题
我需要做什么:
检查是否存在名为 "AUTH_COOKIE" 的 cookie。如果它现在 proxy_pass 到站点 1。否则 proxy_pass 站点 2。为此,我需要阅读 cookie。
我试过的:
我尝试将 cookie 读取为 $cookie_AUTH_COOKIE,但它没有提供任何结果。我尝试使用 $http_cookie 阅读。那个也没用
我试着遵循这里的要点https://gist.github.com/rnorth/2031652 and https://gist.github.com/NickSto/6920790。但是没用。
所以现在我只是尝试读取 cookie 值并使用 echo return 它。响应不包含我的 cookie 的值。
这是我使用 echo
完成的 nginx 配置
server {
listen 3001;
server_name <my_host>;
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
# set $auth_cookie "check";
if ($http_cookie ~* "AUTH_COOKIE=([a-z0-9]+)(?:;|$)") {
set $auth_cookie ;
}
location / {
resolver 8.8.8.8;
echo "This is a test from $host with $auth_cookie. Cookie $cookie_AUTH_COOKIE. Referer $http_referer";
}
}
当我通过 advanced rest client 调用它时,我得到的响应是
This is a test from localhost with . Cookie . Referer
您可以看到 $auth_cookie、$cookie_AUTH_COOKIE 和 $http_referer 不是 returned。
这是我的其他客户端的屏幕截图
我在这里错过了什么。我需要导入任何模块来读取 cookie 吗?
您的屏幕截图上的请求 headers 中没有 cookie。
您可能无法使用此工具任意设置 headers。尝试使用控制台工具,例如 curl
或 GET
。检查此命令 curl -v -H 'Cookie: AUTH_COOKIE=test' http://myhost:3001
我是 UI 编程和 nginx 的新手。对不起,如果这个问题很愚蠢。我也尝试了与此类似的 Whosebug 问题中出现的几乎所有答案,但没有任何帮助我解决这个问题
我需要做什么:
检查是否存在名为 "AUTH_COOKIE" 的 cookie。如果它现在 proxy_pass 到站点 1。否则 proxy_pass 站点 2。为此,我需要阅读 cookie。
我试过的:
我尝试将 cookie 读取为 $cookie_AUTH_COOKIE,但它没有提供任何结果。我尝试使用 $http_cookie 阅读。那个也没用
我试着遵循这里的要点https://gist.github.com/rnorth/2031652 and https://gist.github.com/NickSto/6920790。但是没用。
所以现在我只是尝试读取 cookie 值并使用 echo return 它。响应不包含我的 cookie 的值。
这是我使用 echo
完成的 nginx 配置server {
listen 3001;
server_name <my_host>;
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
# set $auth_cookie "check";
if ($http_cookie ~* "AUTH_COOKIE=([a-z0-9]+)(?:;|$)") {
set $auth_cookie ;
}
location / {
resolver 8.8.8.8;
echo "This is a test from $host with $auth_cookie. Cookie $cookie_AUTH_COOKIE. Referer $http_referer";
}
}
当我通过 advanced rest client 调用它时,我得到的响应是
This is a test from localhost with . Cookie . Referer
您可以看到 $auth_cookie、$cookie_AUTH_COOKIE 和 $http_referer 不是 returned。
这是我的其他客户端的屏幕截图
我在这里错过了什么。我需要导入任何模块来读取 cookie 吗?
您的屏幕截图上的请求 headers 中没有 cookie。
您可能无法使用此工具任意设置 headers。尝试使用控制台工具,例如 curl
或 GET
。检查此命令 curl -v -H 'Cookie: AUTH_COOKIE=test' http://myhost:3001