分类 "Apache/Nginx" 的存档.

Nginx Location 的语法详解,与简单配置

一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.
二、Location语法语法:location [=|~|~*|^~] /uri/ { … }
注:
1、~ 为区分大小写匹配
2、~* 为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
示例一:
location / { }
匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
示例二:
location =/ {}
仅仅匹配/
示例三:
location ~* .(gif|jpg|jpeg)$ {
rewrite .(gif|jpg)$ /logo.png;

注:不区分大小写匹配任何以gif,jpg,jpeg结尾的文件
Read more…

nginx 列出文件目录

nginx 理出文件目录:
代码备忘:

    location /upload/output {
            root   /home/s/www/sostat;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
    }

nginx 取消缓存

在开发的时候,总是不希望js,css文件缓存的,所以我们希望能取消缓存,修改nginx配置即可实现取消缓存。
在配置文件的server{}内,添加这么一句即可:

location ~ .*/.(css|js)$ {
    add_header Cache-Control 'no-store';
}

Nginx出现“413 Request Entity Too Large”错误解决方法

在使用curl上传POST一段数据时,被提示413 Request Entity Too Large,应该是nginx限制了上传数据的大小。
解决方法就是
打开nginx主配置文件nginx.conf,一般在/usr/local/nginx/conf/nginx.conf这个位置,找到http{}段,修改或者添加

client_max_body_size 2m;

然后重启nginx,

sudo /etc/init.d/nginxd reload

即可。
要是以php运行的话,这个大小client_max_body_size要和php.ini中的如下值的最大值差不多或者稍大,这样就不会因为提交数据大小不一致出现错误。

post_max_size = 2M
upload_max_filesize = 2M

Read more…

Session与Cookie。禁用Cookie后Session会不会受影响?

  Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
  服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
  可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。
  来看一下,即使不写Cookie,通过chrome的开发者工具,也可以看到这么一组cookie的键值 {PHPSESSID : 3e23bc66d024af8b531f2adb192478af}。

Session与Cookie区别-禁用cookie会不会影响session?

Session与Cookie区别-禁用cookie会不会影响session?


Read more…

apache日志分析处理;如何通过apache日志计算出PV数和UV数?

google了下,没有找到如何通过apache日志计算出PV数和UV数,在知乎上提问了个,等待高人解答吧。
—–
等了一下午,知乎上也木有人能给出合理的算法,chinaunix上也木有,stackoverflow.com上也木有,自己找时间看一下awstats吧,看看能不能找到答案。
—-
来公布答案了~~
查询了awstats的文档说明,http://awstats.sourceforge.net/docs/awstats_glossary.html 这里

Glossary

Unique Visitor:
A unique visitor is a person or computer (host) that has made at least 1 hit on 1 page of your web site during the current period shown by the report. If this user makes several visits during this period, it is counted only once. Visitors are tracked by IP address, so if multiple users are accessing your site from the same IP (such as a home or office network), they will be counted as a single unique visitor.
The period shown by AWStats reports is by default the current month.
However if you use AWStats as a CGI you can click on the “year” link to have a report for all the year. In such a report, period is a full year, so Unique Visitors are number of hosts that have made at least 1 hit on 1 page of your web site during the year.

awstats中, unique visitor 是根据IP来计算的,所以awstats中统计的UV值,即是IP值。
webtrends中, 也有对UV的统计,不过webtrends也是有JS统计代码的,所以,它的统计原理跟大部分统计代码都一样,通过JS获取客户端的cookie来计算UV值。
附一段webtrends的统计代码,为了避嫌,把敏感信息改掉了,大家看看就行了:


<!-- START OF SmartSource Data Collector TAG -->

<!-- Copyright (c) 1996-2006 WebTrends Inc.  All rights reserved. -->

<!-- V8.0 -->

<!-- $DateTime: 2006/06/27 11:16:10 $ -->

<SCRIPT TYPE="text/javascript"><!--

var gDomain="w.domain.com.cn";	// SDC Production Mode Domain

var gDcsId="dcsoujabcdefghv3n65j4j3j2j2j_test";



var gFpc="WT_FPC";

var gConvert=true;



var gJsWtid;



function dcsSyncGetWtid() {

	document.write("<SCR"+"IPT TYPE='text/javascript' SRC='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'></SCR"+"IPT>");

}

function dcsAsyncGetWtid() {

	gJsWtid=document.createElement("script");

	var jsWtidUrl="http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js";

	window.setTimeout('gJsWtid.src="' + jsWtidUrl + '"',0);

	var headElem=document.getElementsByTagName("head")[0];

	headElem.appendChild(gJsWtid);

}



if ((typeof(gConvert)!="undefined")&&gConvert&&(document.cookie.indexOf(gFpc+"=")==-1)&&(document.cookie.indexOf("WTLOPTOUT=")==-1)){

//	dcsSyncGetWtid();

	dcsAsyncGetWtid();

}



//-->

</SCRIPT>



<SCRIPT SRC="/inc/js/dcs_tag.js" TYPE="text/javascript"></SCRIPT>



<NOSCRIPT>

<IMG ALT="" BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="http://w.domain.com.cn/dcsoujabcdefghv3n65j4j3j2j2j_test/njs.gif?dcsuri=/nojavascript&WT.js=No&WT.tv=8.0.0">

</NOSCRIPT>

<!-- END OF SmartSource Data Collector TAG -->

查看并询问了一些关于Google Analytics计算UV数的算法,记录如下(感谢 yeshu http://www.wainsight.com):
Google Analytics对于独立访客(UV)的计算,是基于访客浏览器中cookie来确定的,当访客第一次(或cookie丢失后)访问添加GATC的代码时,便会创建一个唯一的cookie(即一个UV),cookie中utma变量记录了访客ID、访问次数、访问时间等信息,UV数以此累加。当访客丢失cookie或更换浏览器重新访问网站,都将会被认为新访客,而创建一个cookie,记录为一个新的UV。
.
以下内容也是一些关于apache日志分析的东东,记录下来。

1.什么是UV?
UV是unique visitor的简写,是指独立访客,是以实际访问的电脑计数。
2.什么是IP?
IP是国际互联网协议(Internet Protocol)的简称,是通过网络间信息地址定位具体计算机的方式之一。
3.UV和IP的概念有什么区别?
对于IP来说,它在同一级别的网络(例如某个局域网、社区网、教学楼网或者INTERNET)范围内是唯一的,同一局域网内的所有电脑都只有一个共同ip。
举例来说,我在一个局域网里,对外的IP是219.129.170.111,那么跟我同一局域网里的所有电脑都是这个IP,也就是说假如整个局域网的电脑都访问您的网站的话,在24小时内也只计算一个IP,所以相对UV来说不是很精确。
而UV跟IP稍有不同,UV是访问你的网站的每一台电脑客户端。现在很多朋友用的网络都是局域网,引入了UV后,就能更精确的统计。
总结:
UV的统计数比IP更为准确,能够准确的计数每一台访问电脑,而IP把同一局域内的所有电脑视为一个。
(PS:UV计数会涉及COOKIE。)
 
Read more…

流量统计方法分类 – web server log 和 page tagging

一、什么是web server log 和 page tagging

web server log:使用软件将原始数据解析为有用的数据。主要的工具有awstats、webtrends(收费)。

以下为具体的服务器日志:

202.80.215.14 - - [10/Mar/2012:01:29:59 -0700] "GET www.domain.com/index.php HTTP/1.1" 200 99314 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5"

web server log主要可统计到的数据为:

Apache日志包含的各字段内容及其含义

Apache日志包含的各字段内容及其含义

Read more…

Google Analytics数据统计的原理,如何计算PV,UV,IP

Google Analytics功能非常强大,只要在网站的页面上加入一段代码,就可以提供的丰富详尽的图表式报告。Google Analytics的数据采集功能是采用AJAX技术来实现,整体架构如图所示:

Google Analytics的数据采集整体功能架构

Google Analytics的数据采集整体功能架构

我们都知道在使用Google Analytics需要在网站上加上跟踪代码(Google Analytics Tracking Code,简称GATC) ,下面我们就来研究下跟踪代码是如何进行工作的。
谷歌分析跟踪代码(GATC) 检索网页数据如下:
浏览器请求的网页包含跟踪代码。
GATC创建并初始化一个对象的属性与网络相关的跟踪ID在代码中。
GATC执行你自定义任何跟踪方法。
跟踪代码初始化和管理以下信息:跟踪检索查看是否包括广告系列;收集HTTP请求中的各种用户信息的到Google GATC。
将访问者HTTP请求包含GATC跟踪信息收集到参数名单。

Read more…

ThinkPHP开启Gzip压缩,减少带宽消耗

不知道是我了解的少,还是ThinkPHP本来就不支持gzip压缩,每次流量都消耗的太大了,尤其是在 SAE上托管的这种程序来说,那一分一秒,跑得都是人民币啊。。
ThinkPHP下开启Gzip压缩很简单,不管你是哪个版本,只要在你的入口文件index.php中加入以下两行,如果你的服务器支持,那么就OK了。

define ( "GZIP_ENABLE", function_exists ( 'ob_gzhandler' ) );
ob_start ( GZIP_ENABLE ? 'ob_gzhandler' : null );

 

ThinkPHP中开启Gzip压缩 节省流量74.97%

ThinkPHP中开启Gzip压缩 节省流量74.97%

Read more…

windows下php_curl获取https内容

在搞一个新浪微博小应用,在本地搞的开发环境,win7 旗舰版 64位。
当使用php_curl curl_init() curl_exec()时候,发现当访问接口文件 https://api.weibo.com/oauth2/access_token 要进行登陆认证时,返回结果为false,没有抓取到内容。但是访问http的内容时是正常的,但是openssl也是打开的啊,应该是可以的。
找了半天问题,后来仔细想了一下,认为可能是打开ssl内容时的证书验证问题,于是, 在curl里加入了如下参数,取消证书检验:

        $ch = curl_init();

        curl_setopt($ch,CURLOPT_TIMEOUT,$second);

        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch,CURLOPT_URL,$url);
       
         //取消证书检验
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        
        curl_setopt($ch,CURLOPT_POST, 1);

        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
        
        $data = curl_exec($ch);

        curl_close($ch);

Read more…