我是靠谱客的博主 潇洒冬天,最近开发中收集的这篇文章主要介绍Nginx 反向代理可以缓存 HTTP POST 请求页面吗?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

摘要: Nginx 反向代理可以缓存 HTTP POST 请求页面吗?  2017-09-05 景峯 Netkiller 本文节选自《Netkiller Web 手札》 作者:netkiller 网站:http://www.netkiller.cn 答案是可以!  因为nginx 使用 url 作为缓存的key ( Nginx 将url地址 md5后作为缓存的 key ),所以默认情况下 Nginx 只能处理 HTTP GET 缓存。

Nginx 反向代理可以缓存 HTTP POST 请求页面吗? 

2017-09-05 景峯 

本文节选自《Netkiller Web 手札》 作者:netkiller 网站:http://www.netkiller.cn

 

答案是可以! 

 

因为nginx 使用 url 作为缓存的key ( Nginx 将url地址 md5后作为缓存的 key ),所以默认情况下 Nginx 只能处理 HTTP GET 缓存。

对于 HTTP POST 请求,提交数据放在HTTP Head 头部提交到服务器的, 提交前后URL始终不变,Nginx 无法区分相同网址两次请求的内容有变化。

但是我们可以自定义 缓存 key 例如: "$request_uri|$request_body" 我们将请求地址加上post内容作为缓存的key,这样nginx 便可以区分每次提交后的页面变化。

$request_body 用于缓存的例子:

 proxy_cache_path /tmp/cache levels=1:2 keys_zone=netkiller:128m inactive=1m;
server {
listen 8080;
server_name localhost;
location / {
try_files $uri @backend;
}
location @backend {
proxy_pass http://node1.netkiller.cn:8080;
proxy_cache netkiller;
proxy_cache_methods POST;
proxy_cache_key "$request_uri|$request_body";
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_cache_valid 5s;
proxy_cache_use_stale updating;
add_header X-Cached $upstream_cache_status;
}
}

 

2.3.12.11. $request_body - HTTP POST 数据

2.3.12.11.1. 用户日志

将 POST 数据记录到日志中

log_format
main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" - "$request_body"';

注意:用户登录通常使用POST方式,所以记录POST数据到日志会带来安全问题,例如用户密码泄露。

转载于:https://www.cnblogs.com/muhy/p/10506034.html

最后

以上就是潇洒冬天为你收集整理的Nginx 反向代理可以缓存 HTTP POST 请求页面吗?的全部内容,希望文章能够帮你解决Nginx 反向代理可以缓存 HTTP POST 请求页面吗?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部