当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪nginx日志分析工具 AWStats + JAWStats安装与配置      介绍: Awstats 是一款基于 Perl 的 WEB 日志分析工具,而 JAWStats 是一款基于 PHP 的统计套件,旨在为 Awstats 提供更为精美图形界面。 一、安装和配置 Awstats Awstats 安装非常简单,但必须先确认你.........
    ▪Nginx做前端,Apache做后端的配置实例      Nginx做前端,Apache做后端的配置实例,供大家学习参考。 Nginx做前端处理静态文件,Apache做后端服务器。 一、基础知识 1.1、反向代理过程 Nginx前端,Apache后端过程其实很简单,首先用户访问.........
    ▪nginx中二级子域名的完美解决方案          对于批量添加虚拟主机的需求,Apache 有 vhost_alias 模块帮忙。Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名。 首.........

[1]nginx日志分析工具 AWStats + JAWStats安装与配置
    来源: 互联网  发布时间: 2013-12-24

介绍:
Awstats 是一款基于 Perl 的 WEB 日志分析工具,而 JAWStats 是一款基于 PHP 的统计套件,旨在为 Awstats 提供更为精美图形界面。

一、安装和配置 Awstats

Awstats 安装非常简单,但必须先确认你服务器上 Perl 的环境已经就绪。
考虑到网站流量不大,每日一次的 Nginx 日志切割也可以省略了。

1. 下载与安装
 

代码如下:
wget http://prdownloads.sourceforge.net/awstats/awstats-7.0.tar.gz
tar -zxf awstats-7.0.tar.gz
mv awstats-7.0 /usr/local/awstats
chown -R root:root /usr/local/awstats

2. 生成配置文件
使用 awstats_configure.pl 向导工具,生成每个网站的配置文件。
 

代码如下:
cd /usr/local/awstats/tools
./awstats_configure.pl

1) 输入 none 然后回车
2) 输入 y 确认创建配置文件
3) 输入配置文件名称,一般输入域名。

4) 配置文件使用默认路径 /etc/awstats
5) 按回车继续
6) 按回车完成配置文件的创建

3. 修改配置文件
Awstats 支持基于日期变化的动态日志文件,具体可以看注释。
 

代码如下:
vim /etc/awstats/awstats.wangyan.org.conf
LogFile="/usr/local/nginx/logs/wangyan.org/access.log"(51行左右)

4. 生成 Awstats 统计数据
#创建存放数据的目录
mkdir -p /var/lib/awstats
#方法一:为指定的网站生成数据。
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=wangyan.org

#方法二:为所有网站生成数据
/usr/local/awstats/tools/awstats_updateall.pl now

5. 输出统计结果静态页面 (可选)
若在 Apache 上,那就可以直接打开网页查看统计了,当然 Nginx 也可以省略此步,因为 JAWStats 还尚未出场呢。
 

代码如下:

mkdir -p /var/www/awstats/wangyan.org # 创建存放结果的目录
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=wangyan.org -lang=cn -dir=/root/tmp -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

/usr/local/awstats/tools/awstats_buildstaticpages.pl Awstats 静态页面生成工具
-update -config=wangyan.org 更新配置项
-lang=cn 语言为中文
-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl Awstats 日志更新程序路径。

6. 配置 Awstats 自动运行
设为每小时更新一次。
 

代码如下:
crontab -e
0 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

二、安装和配置 JAWStats

JAWStats 是基于 Awstats 统计数据的,但其界面更为强悍,有了JAWStats 你甚至可以抛弃第三方统计了。

2.1. 下载与安装
 

代码如下:
wget http://static.jawstats.com/src/jawstats-0.7beta.tar.gz
mkdir /var/www/stats/
tar -zxf jawstats-0.7beta.tar.gz -C /var/www/stats/
cd /var/www/stats/
cp config.dist.php config.php

2.2. 修改配置文件
官方配置说明见:http://www.jawstats.com/documentation
jawstats 是支持多站点的,每个 $aConfig 对应一个站点,并可以自由切换。
 

代码如下:
<?php
  // core config parameters
  $sDefaultLanguage      = "zh-cn"; // 设置默认语言
  $sConfigDefaultView    = "thismonth.all";
  $bConfigChangeSites    = false; //是否可以更换站点
  $bConfigUpdateSites    = false; //是否可以更新统计数据
  $sUpdateSiteFilename   = "xml_update.php";
 
  // individual site configuration
  $aConfig["site1"] = array( // site1 网站域名(注意不能乱填)
    "statspath"   => "/var/lib/awstats/", //awstats 统计数据目录
    "updatepath"  => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl/", //用于更新统计数据
    "siteurl"     => "http://wangyan.org", //点击首页标题后会前往这个地址
    "sitename"    => "wangyan.org", //首页标题
    "theme"       => "default",
    "fadespeed"   => 250,
    "password"    => "my-1st-password", //更新统计数据需要输入这个密码
    "includes"    => "",
    "language"    => "zh-cn"
  );
?>

2.3. 安装中文语言包
首先下载 jawstats 多国语言包,解压缩后上传替换 lang 目录。
http://www.jawstats.com/src/languagepack.zip

需要注意的是,你要修改 translations.php 文件的编码为UTF-8,不然全乱码了。
另外修改汉化文件,也是translations.php,不能只修改zh-cn.js文件。

2.4. 设置JAWStats访问密码
Nginx 支持为目录添加密码认证,若不想所有人都能访问到你的统计结果,那继续下面步骤吧。。。

1) 使用apache 的 htpasswd 来创建密码文件。
语法:htpasswd -b -c /home/wangyan/.htpasswds 用户名 密码

2) 在Nginx的server字段内添加以下内容
 

代码如下:
location ~ /stats {
        root /var/www;
        location ~ \.php$ {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
            include  fastcgi_params;
        }
        auth_basic "JAWStats";
        auth_basic_user_file /home/wangyan/.htpasswds;
    }

配置完成,输入 https://youdomain/stats/ 就可以访问了。


    
[2]Nginx做前端,Apache做后端的配置实例
    来源: 互联网  发布时间: 2013-12-24

Nginx做前端,Apache做后端的配置实例,供大家学习参考。

Nginx做前端处理静态文件,Apache做后端服务器。

一、基础知识

1.1、反向代理过程

Nginx前端,Apache后端过程其实很简单,首先用户访问的是80端口的nginx,然后nginx将静态内容留给自己,其余的转发给非80端口的apache,apache处理完毕后再回传给nginx。

1.2、Nginx location 基础

详细见 Nginx 中的 Location 指令基础,在不同的 Location 位置添加反向代理,Nginx 前端就充当了完全不一样的角色。

二、编辑 Nginx 配置文件

vim /usr/local/nginx/conf/nginx.conf

2.1、添加"proxy_set_header"指令
编辑Nginx配置文件,在"http"字段内添加相应代码,发送发送真实IP到后端。
vim /usr/local/nginx/conf/nginx.conf
# 向后端服务器发起请求时添加指定的header头信息
proxy_set_header  Host $host;
# 向后端服务器发送真实 IP
proxy_set_header  X-Real-IP $remote_addr;
#让后端如php能直接通过变量获取真实IP
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

2.2、添加"proxy_pass"指令
在相应 ”location" 字段添加如下反向代理语句。这部分是难点,也是国内教程都没有提及的地方。

方法一:
将所有请求都转发给后端 apache 处理,但由于 "~*" 优先级高于 "/" ,所以图片、JS、CSS例外,"expires" 用于设置缓存时间。
 

代码如下:
location / {
    proxy_pass  http://127.0.0.1:8080;
}
location ~* \.(jpg|jpeg|gif|png)$ {
    access_log  off;
    expires  30d;
}
location ~* \.(js|css)$ {
    access_log  off;
    expires  1d;
}

方法二:
只将.php后缀的文件,交由后端 apache 处理
 

代码如下:
location ~ \.php$ {
    proxy_pass  http://127.0.0.1:8080;
}

2.3、添加高级选项(选做)

#请求连接后端服务器超时时间。即在规定时间,后端必须响应前端握手请求。
proxy_connect_timeout 30;

#后端服务器响应时间。即连接成功,在后端排队等候处理不能超过的时间。
proxy_read_timeout 60;

#后端数据回传时间。即在规定时间,后端服务器必须将所有数据回传完毕。
proxy_send_timeout 30;

#从后端服务器读取的头信息的缓冲区大小。
proxy_buffer_size 4k;

#从后端服务器读取的头信息的缓冲区数目和大小
proxy_buffers 4 32k;

如果服务器繁忙,可申请的proxy_buffers大小
proxy_busy_buffers_size 64k;

#代理缓存临时文件大小
proxy_temp_file_write_size 64k;

#代理最大缓存临时文件大小
proxy_max_temp_file_size 128m;

三、编辑 Apache 配置文件(选做)

注意:mod_rpaf 模块不是必须安装,除非你需要开启 Apache 日志,但有多此一举之嫌,因为已经有 Nginx 日志了,再开 Apache 日志话就出现重复了。

Apache rpaf 模块作用是获取Nginx转发过来的真实IP,否则在Apache日子中来访IP全部为127.0.0.1。
 

代码如下:
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/usr/local/www/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

vim /usr/local/apache/conf/httpd.conf LoadModule rpaf_module modules/mod_rpaf-2.0.so
 

代码如下:
RPAFenable On
RPAFproxy_ips 127.0.0.1
RPAFsethostname On
RPAFheader X-Forwarded-For

    
[3]nginx中二级子域名的完美解决方案
    来源: 互联网  发布时间: 2013-12-24

    对于批量添加虚拟主机的需求,Apache 有 vhost_alias 模块帮忙。Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名。

首先看看目前网上搜到的方法。
 

代码如下:
<?php
if ( $host ~* (.*)\.(.*)\.(.*)) {
    set $subdomain $1;
}
location / {
    root  html/$subdomain;
    index index.html index.php;
}

上面的 "~*" 表示不区分大小写,然后就是匹配任何 "xxx.xxx.xxx" 类型的网址,最后就悲剧了,不仅匹配了 "www.yourdomian.com" 甚至连 "我艹.$!@.com" 这类网址也匹配了。

嗯,没错!这是一个正则问题。建议先阅读 正则表达式30分钟入门教程(最新)、Nginx中的 Location 指令基础,然后往下看...
完美解决方案
 

代码如下:
<?php
if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
    set $subdomain /$1;
}
location / {
    root /home/wangyan/public_html$subdomain;
    index index.html index.php;
}

效果,下图可以看到,已经实现了,不匹配 "www" 但可以匹配包含 "www" 的子域名。

使用方法,请将上面代码复制到 server {} 标签中,然后重启nginx即可。

FAQ:

1)、请问:我临时测试,需要在访问网站时打开nginx代理服务器本地的一个页面文件(tmp.html),应该如何配置?
回复:
如果要测试效果,首先新建子域文件夹如"subdomain",并将"tmp.html"放在这个文件夹内,然后修改hosts文件增加一条记录"127.0.0.1 subdomain.yourdomain.com",最后访问"http://subdomain.yourdomain.com/tmp.html"即可。

2)、按照你的配置实现了二级域名到子目录,但是,现在的问题是二级域名下的html文件访问正常,但php文件访问不到,报错:No input file specified.
我的配置如下,求帮助!
 

代码如下:

server {
listen 80;
server_name *.xxx.net;

if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
set $subdomain $1;
}

location / {
root /webroot/xxx.net/$subdomain;
index index.html index.php;
}

location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
}
 

搞定了,location ~ .*\.(php|php5)?$
 

代码如下:
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
 

中加入fastcgi_param script_FILENAME /webroot/xxx.net/$subdomain$fastcgi_script_name;
搞定

回复:
根目录的路径一般用变量$document_root代替。即"fastcgi_param script_FILENAME $document_root/$fastcgi_script_name;"

再问:
你好,我是初用nginx的,现在有个问题,假如我的域名是abc.com
在nginx下面我这样配置
 

代码如下:

server {
  listen 80;
  server_name www.abc.com abc.com event.abc.com cont.abc.com;

*****以下省略
}

我不需要用户使用abc.com访问的时候直接跳转到www.abc.com;但是使用event.abc.com cont.abc.com这两个访问的时候,地址不变。
不知道这个怎么写?请教了。。

回复:
 

代码如下:
if ( $host = wangyan.org) {
   rewrite (.*) http://www.wangyan.org$1 permanent;
}

3)、应该加上subdomain不存在时的处理
回复:
若子域名不存在,则$subdomain值为空。不过你既然喜欢多处理一下,当然也可加上些if、else之类的判断。

4)、负载均衡的情况下,子域名无法访问。
 

代码如下:
upstream app {
server 192.168.1.13:8001;
server 192.168.1.3:8080;
}
server {
listen 80;
server_name *.ee.com;
if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
set $subdomain /$1;
}
location / {
proxy_pass http://app/$subdomain;
index index.html index.php;
}
}

回复:
修改为 proxy_pass http://app;然后为每台服务器都设置路径。

路径没有问题
 

代码如下:
upstream app {
server 192.168.1.13:8001;
server 192.168.1.3:8080;
}
 

这二台server 是tomcat
 

代码如下:
server_name *.ee.com;
if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
set $URL $1;
}
location / {
proxy_pass http://app/$URL/;
index index.html index.php;
}
}
 

这样就可以了,但是用ee.com访问就不行,www.ee.com和其他子域名都没有问题;只是网站的CSS全部乱了。

5)、我请教个问题:我的网站根目录是/wwwdoc/myweb/
我配置了域名domian.com指向myweb/可正常访问。
现在我新建了个目录/wwwdoc/img/,用来存储上传的图片, 比如今天现在上传了一张xxx.jpg的图片,存在服务器上的完整路径是/wwwdoc/img/2012/03/xxx.jpg,
我希望图片的url是:http://img.domain.com/2012/03/xxx.jpg;
我的nginx该如何配置?请指点下,谢谢

回复:
用两个server就可以了。
 

代码如下:

server {
    server_name domian.com;
    root /wwwdoc/myweb;
}

server {
    server_name img.domian.com;
    root /wwwdoc/img;
}


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3