nginx日志按日期按小时切割并压缩以及清除历史日志的定时shell脚本
今天在迁移服务器的时候在新的服务器上修改了一套nginx日志的按日定时迁移的shell脚本,留在此处待用。nginx定时任务的命令,每天0时按日切割nginx日志,每天2点进行删除日志及压缩日志: #nginxlogcut定时任务 00***/bin/bash/opt/modules/nginx/sbin/cut_nginx_log.sh>/dev/null2>&1 02***/bin/bash/opt/modules/nginx/sbin/del_nginx_log.sh>/dev/null2>&1 #cut_nginx_log.sh脚本明细如下: [online@SERsbin]$catcut_nginx_log.sh #!/bin/bash #Thisscriptrunat00:00...[>>…]
nginx配置反向代理时配置项数据项完整备份一下留待再用
nginx配置反向代理时完整配置数据项,好像我以前也有过这样一篇文章,这个比较全,再在这里记录一下以备需用时。每个upstream反向代理设备的相关数据:down表示单前的server暂时不参与负载,up表示上线weight 默认为1.weight越大,负载的权重就越大。max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误fail_timeout:max_fails次失败后,暂停的时间。backup:其它所有的非backup机器down或者忙的时候,再请求backup机器。 #nginx的upstream配置,注意名称service_backe...[>>…]
nginx中限流模块ngx_http_limit_req_module里的limit_req_zone指令和limit_zone限流指令
通常我们会在程序里进行防盗刷,实际这些可以在nginx层就解决,nginx里有一个模板:ngx_http_limit_req_module模块,其中有一个指令limit_req_zone可以进行限流访问,以防止同一用户(以IP统计,所以CDN转发过来的要注意要把客户端IP转发过来)恶意攻击刷爆服务器。ngx_http_limit_req_module模块是nginx默认安装的,所以只要直接配置即可。 #http模块limit_req_zone配置使用格式,同时还需要配置server #$binary_remote_addr是$remote_addr(客户端IP)的二进制格式,固定占用4个字节。下面...[>>…]
php中常用的一致性哈希的算法类flexihash
数据分库分表,数据分片处理是业务数据增长到一定阶段后都会碰到的问题,对于一般的分库分表多是通过自定义的数据分类来达到分片,但在大数据分片上仍然使用自定义数据分片的话非常不利于扩展,这也就是一致性哈希算法的需求初衷。 例如我们业务中会涉及到很多Redis数据存储,开始的时候redis服务器并不多,也就是使用了最简单的方式通过在业务代码里对key进行hash计算再和存储实例个数进行对比进行分别存放,后来业务量加大增加到了60多个redis实例进行数据存储,这...[>>…]
nginx配置中的if多条件判断问题-阿里云阻止指host访问
下面是一段nginx配置,之前只是判断如果$host是否等于www.04007.cn,后来我加上一个匹配04007,保存配置文件后检查发现报错:nginx:[emerg]invalidcondition #配置文件修改 if($host~/04007/&&$host!='www.04007.cn'){ rewrite^/(.*)$http://www.04007.cn/$1permanent; } [root@04007vhosts]#nginx-t nginx:[emerg]invalidcondition"$host"in/usr/local/nginx/conf/vhosts/04007.conf:6 nginx:configurationfile/usr/local/nginx/conf/nginx.conftestfailed 于是我带着程序语言的逻...[>>…]
thinkphp3.2框架中的一些小功能-切换表前缀-输出到其它模板
一、thinkphp切换数据表前缀 最近花了一天时间改了一点CMS后台,后台是使用thinkphp3.2搭建的,在改的时候有一点小地方觉得可以记录在这里。第一个是切换数据表的前缀,之前的数据库中都是统一的数据表前缀,但这次有些特殊,于是在使用中就需要一些特别处理了。开始我想是不是可以在查询一些特殊前缀表的时候先通过程序设置一下前缀的配置,执行完SQL后再改回来,后来在tp的官网里看到有更简单的实现方法。 在tp中生成Model我们主要使用M方法或D方法,D方法实例化模...[>>…]
关于thinkPHP3.2中的rewrite不严谨问题会导致网站被注入
thinkPHP3.2的rewrite问题,之前也没在意过,但是今天浏览了一下服务器的一套CMS的相关东西,因为这套CMS是使用thinkPHP3.2搭建的,在浏览代码时发现其目录架构与目前的流行架构不一样,其index.php是写在应用程序的根目录下,而现在的index.php一般都写在public目录(只允许对外访问的目录下面),于是我顺便看了一下涉及此CMS平台的nginx配置,配置conf基本和thinkphp官网的配置一样,在thinkphp网站上也能看到大多数这样的配置,如下: server{ listen80; server_namedomain.com; error_p...[>>…]
awk对nginx的请求日志按接口进行统计
服务器上的接口数量已经不知道有多少了,特别是一个长尾接口请求量不是很大的,想考虑对线上服务器进行一些接口迁移处理,于是着手对线上的请求日志进行统计,目标就是能统计出各个接口的请求数量,但是呢,因为系统的遗留问题,接口并不规范,各端(安卓和iphone以及ipad)的请求URL格式不一样,另外内部还有一大堆的无规则的rewrite处理,不好办。经过对请求日志的慢慢整理,今天基本统计出了一些核心的请求接口,同时也把所有的长尾请求接口也都列了出来。在此做个笔记, #awk对所有分离出...[>>…]
php进行curl报错Protocol https not supported or disabled in libcurl及微信第三方发布代码报错85008:category is in invalid format hint
php进行curl请求时报错:Protocolhttpsnotsupportedordisabledinlibcurl $url="https://www.baidu.com"; $data=CurlObj::http_post($url,$data); 如上示例,原因是上面的$url中的字符串前面多了个空格字符,会导致这种报错。 调用微信进行代码发布时,遇到报错[errcode]=>85008[errmsg]=>categoryisininvalidformathint,从字面上理解意思是分类错误,但是我的分类是从微信的接口拿回来的数据,所以看到这个报错,我真是束手无策了,后来看到网上有同样的朋友遇到这错误,竟然是接口提...[>>…]
nginx配置支持https请求
nginx支持https是一个很简单的事情,首先服务器上得已安装openssl.然后执行以下命令创建一个有效期10年,RSA2048加密的SSL密钥keynginx.key和X509证书nginx.crt。 sudomkdir/etc/https sudoopensslreq-x509-nodes-days3650-newkeyrsa:2048-keyout/etc/https/nginx.key-out/etc/https/nginx.crt opensslreq的各参数解释如下: whereoptionsare -informarginputformat-DERorPEM -outformargoutputformat-DERorPEM -inarginputfile -outargoutputfile -texttextformofrequest -pubkeyoutputpublickey -nooutdonotoutputR...[>>…]