问题:
打开网站后台管理系统,发现图片显示非常慢,查看nginx前端代理上查出:
[error] 28423#0: *5 connect() failed (111: Connection refused) while connecting to upstream
打开VPN,直接用后台服务器的IP地址去访问,发现速度相当快,于是怀疑是代理服务器的配置问题。
当下载大的附件,或是页面中有大图片时,就会下载中断或是图版无法显示 也许你要说我用的nginx缺省的设置没碰到这问题,那是因为你的网站没大文件。
root /home/mypmcc/mypm20100914;
index index.jhtml index.html login_page.jhtml;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080 ;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 6000;
proxy_buffer_size 32k;
proxy_buffers4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 512k;
}
nginx 反向代理参数说明
proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时)
proxy_buffer_size 32k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k;#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
proxy_temp_file_write_size 64k;我的图片是200多k的,哎!
问题就出在proxy_temp_file_write_size上,当你的文件超过该参数设置的大小时,nginx会先将文件写入临时目录(缺省为nginx安装目下/proxy_temp目录),或直接更改proxy_temp_file_write_size的值。
缺省nginx是以nobody身份启动的,用ls -al 命令查看proxy_temp目录 nobody是proxy_temp目录的所有者,怪了那为什么没权限呢,接下来我查看proxy_temp的父目录既nginx安装目录。发现 nobody竞然没权限,怪不得会出上面的问题。
然后设置任何人都可以写 proxy_temp目录,重启 nginx 即可解决。
配置文件段如下:
log_format for_cookie '$remote_addr - - [$time_local] "$request" '
'$status $body_bytes_sent'
' "$http_referer" "$http_user_agent" "$guid"';
set $guid "-";
if ( $http_cookie ~* "guid=(\S+)(;.*|$)"){
set $guid $1;
}
access_log /usr/local/nginx/logs/click_hy.log for_cookie
注:上面的配置是取cookie中的guid的值,如果要取所有的cookie,则不需要set,$http_cookie即包含所有的cookie的值。
$guid :guid替换成你需要取的cookie中的项
测试:关于种cookie,可以使用下面的html代码,编辑,添加需要种的cookie
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<meta http-equiv="Refresh" content="10"> //为了方便测试,每10秒刷新一次页面
</head>
<body>
<h1>test.test.com域测试</h1>
下面列出了该域的cookie<br>
<p>
<script>
document.cookie="guid=A1UD8E5512451111111111"; //种cookie,追加
document.cookie="city=beijing"; //种cookie,追加
document.write(document.cookie); //列出已经存在的
</script>
</p>
</body>
</html>
查看cookie
在浏览器的地址栏输入如下js代码: javascript:document.write(document.cookie); 回车(注意,不要直接粘贴,直接粘贴会丢失javascript:),得到网站的cookie值。
您可能感兴趣的文章:
nginx 日志分析的实例学习
Nginx日志模块分析详解
Nginx关闭日志的方法
Nginx日志分析 Nginx日志切割与Awstats配置
nginx日志配置、Nginx日志分割
有关nginx日志格式的设计分享
nginx日志统计访问时间的例子
nginx日志配置文件的格式说明
nginx日志报大量400错误的解决方法
nginx关闭favicon.ico日志记录的方法
nginx与apache日志格式的区别
修改nginx访问日志的时间格式的方法
Nginx日志中过滤关键字的写法
nginx 日志分析实例
问题描述:
使用nginx的proxy_cache缓存后端的另一台nginx处理的url,后端为php,没有问题。
当使用nginx的fastcgi_cache缓存本机的php页面时,出现问题,1个缓存页中包含了多个页面。
url类似为:http://1.1.1.1/www/aaa.php?zoneid=111
原因分析:
proxy_cache_key的默认值为:$scheme$proxy_host$request_uri;
而
fastcgi_cache_key的默认值为:NONE
解决办法:
为fastcgi_cache_key设置值为: localhost:9000$request_uri$request_method;