nginx+awstats多域名日志分析<2>

AWStats多域名配置教程

http://crfsz.blog.51cto.com/7835882/1841843

上一篇博客配置了日志分析是适合单个域名的,如果有多个域名怎么处理呢。


step:

一、

awstats安装配置好之后会产生/etc/awstats/awstats.analyse.conf,然后把/etc/awstats/awstats.analyse.conf复制到awstats.common.conf,把 LogFile=“xxxx” 字段,SiteDomain=“xxx”字段,DirData=“xxx”字段HostAliases=”xxx“字段注释了就行这样awstats.common.conf就变成了一个基本的配置文件。

eg:如你有站点rubby,www


二、

编辑awstats.rubby.conf

Include "awstats.common.conf"  #统一配置文件
LogFile="/data/log/awstats/rubby.access.log" #日志路径
SiteDomain="rubby" #站点名称
DirData="/var/lib/awstats"  #awstats库文件
HostAliases="rubby www.rubby 127.0.0.1 localhost"  #主机别名


注:www的配置和awstats.rubby.conf一样



三、

生产html文件

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=rubby

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www

就会在/var/lib/awstats下产生数据库文件,格式为txt。


创建静态页面存放路径

mkdir -p  /var/www/analyse/awstats/rubby
mkdir -p  /var/www/analyse/awstats/www

/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=rubby -lang=cn -dir=/var/www/analyse/awstats/rubby
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=www  -lang=cn -dir=/var/www/analyse/awstats/www

四、获取地理位置
安装纯真IP解析插件:软件下载
http://down.51cto.com/data/2238077
下载解压后
把qqhostinfo.pm、qqwry.pl、qqwry.dat(纯真ip库)放到awstats的wwwroot/cgi-bin/plugins目录中
并给予qqhostinfo.pm可执行权限 chmod 755 qqhostinfo.pm
修改你的awstats配置文件(awstats.yourwebsite.conf),在最后添加LoadPlugin="qqhostinfo"
然后删除旧的统计数据,更新静态页面。
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=rubby -lang=cn -dir=/var/www/analyse/awstats/rubby
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=www  -lang=cn -dir=/var/www/analyse/awstats/www



五、配置分析日志平台(多个域名没查看一次数据,就要更改一下域名很不方便)
参考博客:http://kaifly.blog.51cto.com/3209616/1719248
思路就是写一个html,包含你要分析的站点,然后超链接到你awststs的分析页面
如果感兴趣可以配置一下



六:配置crontab
定时执行产生html文件
50 08  * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=rubby -lang=cn -dir=/var/www/analyse/awstats/rubby
50 08  * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update  -config=www  -lang=cn -dir=/var/www/analyse/awstats/www

note:
多域名的日志不在一台服务器上这时候就需要去周期下载日志:我这里用的是rsync。
/usr/bin/rsync -av  --password-file=/etc/pwd.conf log@192.168.1.1::data/log/nginx/rubby.access.log  /data/log/awstats
/usr/bin/rsync -av  --password-file=/etc/pwd.conf log@192.168.2.1::data/log/nginx/www.access.log   /data/log/awstats

#说明每天晚上等日志切割之后,把日志下载到awstats服务器。然后每天早上就分析结果。



以上就是awstats多域名的配置,当然现在用的比较多的是ELK。这个日志分析比较流弊了,还在了解当中。





      本文转自卫庄的痛 51CTO博客,原文链接:http://blog.51cto.com/crfsz/1845106,如需转载请自行联系原作者





                                  




<think>我们正在解决Docker中Nginx返回500 Internal Server Error的问题。500错误通常表示服务器内部错误,可能由多种原因引起,包括配置错误、权限问题、资源不足或应用程序错误等。以下将逐步进行排查和解决。 ### 步骤1: 检查Nginx错误日志 500错误的具体原因通常可以在Nginx的错误日志中找到。首先,我们需要找到Nginx容器的日志。 1. 确定Nginx容器的名称或ID: ```bash docker ps ``` 2. 查看Nginx容器的日志: ```bash docker logs <container_name_or_id> ``` 或者,如果日志很长,可以加上`--tail`和`-f`参数: ```bash docker logs --tail 50 -f <container_name_or_id> ``` 在日志中查找类似于`error`或`500`的关键字,特别是错误发生时的相关条目。 ### 步骤2: 检查Nginx配置文件 配置错误是常见的导致500错误的原因。检查Nginx配置文件是否正确。 1. 进入容器内部检查配置文件: ```bash docker exec -it <container_name_or_id> /bin/bash ``` 2. 在容器内部,通常Nginx的配置文件位于`/etc/nginx/nginx.conf`以及`/etc/nginx/conf.d/`目录下。检查这些文件,特别是最近修改过的文件。 3. 可以使用Nginx自带的配置检查工具: ```bash nginx -t ``` 如果配置有误,该命令会指出错误的位置。 ### 步骤3: 检查文件权限 如果Nginx无法访问所需的资源(如静态文件、脚本等),可能会导致500错误。确保Nginx进程用户(通常是`www-data`或`nginx`)有权限访问相关文件和目录。 在容器内部,检查网站根目录(例如`/usr/share/nginx/html`)的权限: ```bash ls -l /usr/share/nginx/html ``` 确保Nginx用户有读取权限。如果需要,可以修改权限: ```bash chmod -R 755 /usr/share/nginx/html chown -R nginx:nginx /usr/share/nginx/html # 或者根据实际用户组调整 ``` ### 步骤4: 检查资源限制 如果服务器资源(如内存)不足,也可能导致500错误。检查Docker容器的资源限制: ```bash docker stats <container_name_or_id> ``` 查看容器资源使用情况,特别是内存和CPU。 ### 步骤5: 检查后端应用(如果适用) 如果Nginx作为反向代理,500错误可能由后端应用引起。检查后端应用是否正常运行,并查看后端应用的日志。 ### 步骤6: 检查依赖服务 如果应用依赖其他服务(如数据库、缓存等),确保这些服务正常运行,并且Nginx能够访问它们。 ### 步骤7: 重启Nginx容器 在修改配置或解决问题后,重启容器: ```bash docker restart <container_name_or_id> ``` ### 常见错误场景 1. **配置语法错误**:如缺少分号、括号不匹配等。使用`nginx -t`检查。 2. **文件或目录不存在**:例如,在配置中指定的根目录路径错误。 3. **权限问题**:例如,静态文件对Nginx用户不可读。 4. **FastCGI问题**:如果使用PHP-FPM,确保PHP-FPM服务正常运行,并且Nginx配置正确指向PHP-FPM。 5. **磁盘空间不足**:使用`docker system df`检查Docker磁盘使用情况。 ### 示例:解决PHP-FPM导致的500错误 如果Nginx与PHP-FPM一起使用,常见的原因是PHP-FPM配置问题。检查: - PHP-FPM是否运行:在容器内执行`ps aux | grep php-fpm` - Nginx配置中`fastcgi_pass`指令是否正确指向PHP-FPM的地址(例如`127.0.0.1:9000`或`php-fpm:9000`,在Docker中可能需要使用容器名) ### 总结 500错误是一个笼统的错误,需要根据日志和具体配置进行排查。以上步骤覆盖了常见的排查方向。如果问题仍然存在,请根据具体的错误日志进一步分析。 §§相关问题§§ 1. 如何查看Docker容器的实时日志? 2. Nginx常见配置错误有哪些? 3. 如何调整Docker容器的资源限制? 4. 如何解决Docker容器中的文件权限问题? 5. 如何配置Nginx作为反向代理?</think>### Docker中Nginx返回500错误的排查指南 500 Internal Server Error 表示服务器内部处理错误,可能由配置错误、权限问题、资源不足或应用代码异常引起。以下是系统化的排查步骤: #### 1. **检查Nginx错误日志** ```bash # 查看容器实时日志 docker logs -f <nginx_container_name> # 进入容器查看详细错误日志 docker exec -it <nginx_container_name> bash cat /var/log/nginx/error.log | grep -i "500" ``` **常见日志线索**: - `*13 connect() failed (111: Connection refused)` → 后端服务不可用 - `*1 upstream prematurely closed connection` → PHP/Python进程崩溃 - `open() "/path/file" failed (13: Permission denied)` → 权限问题[^1] #### 2. **验证Nginx配置** ```bash # 在容器内测试配置 docker exec -it <nginx_container_name> nginx -t # 输出示例 nginx: [emerg] invalid number of arguments in "proxy_pass" directive in /etc/nginx/conf.d/app.conf:10 nginx: configuration file test failed ``` **关键检查点**: - `server_name` 是否匹配访问域名 - `root` 路径是否正确(Docker路径需与volume映射一致) - `proxy_pass` 后端地址是否可达 - 缺少分号/括号等语法错误 #### 3. **检查文件权限** ```bash # 查看网站目录权限 docker exec -it <nginx_container_name> ls -l /usr/share/nginx/html # 修复权限(Nginx默认用户www-data) docker exec -it <nginx_container_name> chown -R www-data:www-data /var/www ``` **权限要求**: - 静态文件:至少`644`权限 - 可执行脚本:`755`权限 - 用户:需匹配`nginx.conf`中的`user`指令(通常为`www-data`或`nginx`)[^2] #### 4. **检查资源限制** ```bash # 查看容器资源状态 docker stats <nginx_container_name> # 检查进程内存 docker exec -it <nginx_container_name> top ``` **资源瓶颈**: - 内存不足:调整Docker内存限制 `--memory=1g` - Worker进程崩溃:增加`nginx.conf`中的`worker_processes`和`worker_connections` #### 5. **验证后端服务** ```bash # 测试PHP-FPM连通性(如适用) docker exec -it <nginx_container_name> telnet 127.0.0.1 9000 # 检查FastCGI配置 location ~ \.php$ { fastcgi_pass php-fpm:9000; # 需匹配PHP容器名 include fastcgi_params; } ``` **常见后端问题**: - PHP未安装扩展(如pdo_mysql) - Python/Node应用未监听正确端口 - 数据库连接失败 #### 6. **特殊场景排查** - **静态文件缺失**:确认文件是否通过volume正确挂载 - **HTTPS配置错误**:检查SSL证书路径和权限 - **客户端数据过大**:增加`client_max_body_size 100M;` #### 修复示例:解决权限问题 ```bash # 宿主机修改目录权限 chmod -R 755 /host/path/to/webroot # 容器内重置所有者 docker exec -it nginx chown -R nginx:nginx /usr/share/nginx/html ``` ### 常见解决方案总结 | 问题类型 | 解决措施 | |----------------|----------------------------------| | 配置语法错误 | `nginx -t` 检查并修正配置 | | 文件权限问题 | `chown -R www-data:www-data` | | 后端服务中断 | 重启PHP/Node容器或检查应用日志 | | 资源不足 | 增加Docker内存/CPU限制 | | 路径映射错误 | 检查`docker run -v`挂载参数 | > **重要提示**:修改配置后需重启容器:`docker restart <container_name>`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值