每次都很容易忘记Nginx的变量,下面列出来了一些常用$remote_addr //获取客户端ip
$binary_remote_addr //客户端ip(二进制)
$remote_port //客户端port,如:50472
$remote_user //已经经过Auth Basic Module验证的用户名
$host //请求主机头字段,否则为服务器名称,如:blog.sakmon.com
$request //用户请求信息,如:GET ?a=1&b=2 HTTP/1.1
$request_filename //当前请求的文件的路径名,由root或alias和URI request组合而成,如:/2013/81.html
$status //请求的响应状态码,如:200
$body_bytes_sent //&nbs
Nginx的return关键字属于HttpRewriteModule模块:语法:return http状态码
默认值:无
上下文:server,location,if
该指令将结束执行直接返回http状态码到客户端.
支持的http状态码:200, 204, 400, 402-406, 408, 410, 411, 413, 416 , 500-504,还有非标准的444状态码.使用方法:#不符合规则的返回403禁止访问location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
return&
Squid简介Squid可以做什么性能要素Squid安装Squid快速体验Squid配置Squid简介Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs on most available operating systems, including Windows and is licensed under the GNU GPL翻译过来大致意思: Squid是一个支持HTTP,HTTPS,FTP等众多协议的缓存代理
###举例仓库仓库地址A:git@gitlab.54php.cn:guowei/demos.git仓库地址B:git@gitlab.54php.cn:infra/demos.git开发人员仓库C:git@gitlab.54php.cn:lurenjia/demos.git###多分支开发背景以demos为例子,主分支是仓库B,开发分支是仓库A,然后每个开发人员从仓库A clone,每周会在仓库A切一个新分支(例如43周叫做demos_201443)git clone A将远程的仓库A 克隆到本地仓库git remote add B_alias Bgit checkout -b demos_201443_local B_alias/demos_201443从仓库B的分支demos_201443创建一个本地分支,分支名称叫做demos_201443_localgit add .git commit -am "代码提交NB备注信息"git fetch --allgit re
git 基本命令git add .git commit -am "请填写你NB的备注"git fetch --allgit fetch -p //如果远程分支删除了,本地发现还是有备份,可以使用此命令git push origin master:mastergit remote add origin 仓库地址git remote rm origingit remote -vgit rebase origin/mastergit rebase --continuegit rebase --skipgit rebase --abort###举例仓库仓库地址A:git@gitlab.54php.cn:guowei/demos.git仓库地址B:git@gitlab.54php.cn:infra/demos.git开发人员仓库C:git@gitlab.54php.cn:lurenjia/demos.git###单分支开发git clone A将远程的仓
技术界没有银弹,只有你自己不断的提高自己,练好内功,方能在未来指点江山对技术要有追求,要学会偷懒,经常完善自己的编程思想 迷惑一最近有好几个人问我,说:工作已经1年左右,每天都在忙,感觉技能方面没有什么提升,感觉到对技术方向的迷茫。迷惑二有很多人本身有点眼高手低,只要一听到干货就打了鸡血,干什么都要看看是不是干货迷惑三我只想写个能运行的代码就行了,请不要和我讲那么多编程思想的问题迷惑四普通工程师和高级工程师的差别在哪里?我以我这几年的工作经历和大家来唠唠这迷惑之一二三四说首先这两个阶段我都经历过,我刚开始来到上海这个陌生的大城市当年的确就是凭着一股不服输勇气支撑着我(Too Young Too Simple)。今天当然也感谢当年那次的决定,不然也不会有今天的我第一份工作是为一个公司(BAT之一)做外包项目,当时真的蛮辛苦的,经常半夜还在加班,由于是第一份工作当然非常开心并且干劲十足。那时候我记得我只用了三个月就已经熟悉了公司的框架以及外包公司框架。那时只要有时间(经常三更半夜)
预祝大家端午节安康~~今天想和大家聊聊的心灵鸡汤主题是:为撒要爱惜自己的羽毛。羽毛是什么?其实在2年前,我也不理解羽毛是什么。只是我的老大们经常在说。这里的羽毛是自己的名声。例如你在公司就是 公司同事对你的评价和认可度。在朋友圈就是朋友对你的亲密和信任度。在某个具体行业 就是 你在业界的知名度。总结就是:认可度、信任度、知名度如何建立?想要建立认可度、信任度、知名度 绝非一蹴而就的,需要时间积累。我个人有感是通过三年积累起来的。而在这三年里,我是通过了无数件事情和努力,让他们觉得我是靠谱的、交给我的事情不用担心。其实这也是个人成长的阶段,只有当你的思维真密度 和 老大们的意识在慢慢靠近的时候,说明你快要被认可了。如何做到?多做事,少废话。我记得我当时做了好多系统,例如ipublish发布系统、Job管理平台、CMDB运维系统、Ansible打造业务标准机、数据库性能分析系统等等。别人认识你都是通过具体的事情和你接触,然后慢慢对你有了理性的打分要走出去,要有分享精神。你懂得东西再多,如果你
当使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP request failed!这个警告信息。google或者baidu一下,好多这样的问题,解决的方法都是修改PHP.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可。)重启服务器。但是有些还是会有这个警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible
原始时代我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了总结如下代码混乱规范不统一没有后续统一更新等管理Composer侠应运而生composer直到如今 已有5个年头了,也是直到今年才有了第一个稳定版本1.0,以前都是alpha版本了,其实composer的发展 也和 PHP-FIG (后续会专门解释的)的发展有很大关系composer是php新时代的依赖管理利器,就像python的pip,nodejs的npm,javascript的bower等。你可以在自己的项目申明所依赖的外部库,composer可以帮你安装这些composer解决如下问题你有一个项目需要依赖若干个库其中一个库依赖其他库找出你需要的版本进行安装安装Composer要求composer 要求 php 不低于 5.3.2+命令curl -sS https://getcompo
问题最近遇到一个这样的问题,新建数据库表的时候 提示 错误如下Invalid default value for 'created_time' timestamp field语句如下`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间' 错误大致的意思 就是不能为 timestamp字段设置指定的默认值,也就是语句中的 0000-00-00 00:00:00,但是很奇怪在本地就可以,为什么线上服务器就不行了?本地数据库版本:5.5.46
上线数据库版本:5.7.17后来经过查询文档(文档地址)发现,其实从5.6.17这个版本就默认设置了不允许插入 0 日期了,术语是 NO_ZERO_IN_DA
缘由经常会有人问xx框架怎么配置运行环境,这里我就给贴出吉祥三宝(Yii2,Laravel5,Thinkphp5 )的Nginx和Apache的配置,供大家参考NginxYii2server {
charset utf-8;
client_max_body_size 128M;
listen 80;
server_name yii.local.test;
root&n
为什么需要备份本人博客使用的数据库服务 和 WebServer服务放在一起,2016年发生了一件事情:博客服务器被封了,不让登陆,然后供应商让我重装系统,然后悲剧了:所有数据没有了 。个人做博客写文章都是心血积累,一夜之间回到解放前。这件事情让我认识到数据备份非常重要。当然数据丢失还有其他可能,例如服务器由于某种设置不正确导致不能启动而重置电脑我是这么备份数据的数据库备份应用程序代码备份应用程序配置文件备份图片备份数据库备份关于数据库备份 我列为第一重要的,因为数据是最重要的,其他的都还可以花时间慢慢找回了。我个人数据库备份是通过脚本,然后部署crontab,最后上传 压缩文件到 七牛云存储起来应用程序代码备份关于应用代码我使用github来保存应用程序配置文件备份应用程序有一部分配置文件是根据不同环境 配置不一样的,并且这部分配置文件也不应该在github中有提交记录(以防被人恶意利用)。关于这部分配置文件我是单独 备份压缩然后上传到七牛云存储起来的图片备份我个人博客有不少图片,这些图
删除git某个文件的所有历史记录git的目的就是版本控制,记录每一个版本的变动。然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中。例如不小心上传了一堆错误的文件,或者不小心上传了帐号、密码,那么这个时候怎么办呢?下面的命令可以完美解决你的问题$ git filter-branch -f --tree-filter 'rm -rf common/service/SyncBlogServince.php' HEAD
$ git push origin --force批量删除git分支git branch -r |grep 'origin/pmt_201608' | awk -F '/' '{print&nb
目的本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧命名空间(namespace)php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量 和 第三方的类/函数/常量冲突。引用命名空间下资源都要 使用关键字 use 标明 例如require_once("apanly/BrowserDetector/Browser.php");
use apanly\BrowserDetector\Browser;
new Browser();自动加载php可以自定义自动加载函数,主要减少include 和 require 的使用。例如function myLoader($classname){
$c
偶然发现最近在公司日志平台 总是可以看到很多关于php curl的错误信息Operation timed out after 0 milliseconds with 0 out of 0 bytes received
Resolving timed out after 5514 milliseconds非常奇怪,以前都是好的,使用wget获取也非常慢,从下面的结果可以看出来 dns解析比较慢wget www.domain.com
--2016-11-19 22:17:30-- http://www.domain.com/
Resolving www.domain.com... # 此处停滞约 5 秒
xxx.xxx.xxx.xx
个人总结URL统一管理,调用统一方法,并且URL必须返回全路径,可以封装成service,并且url是全路径(包含域名),以后更改都非常方便了静态资源加版本好,调用统一方法用户密码必须加salt,最好记录在数据库中,每个用户都有不同的salt静态资源版本号,每次上线需要版本号不一样了对于数据量很大的查询,时刻记得要释放内存 详见phpexcel 内存溢出 优化手机API必须指定版本号,例如 /v1/user/info ,/v2/user/info后端应用应该记录所有的GET,POST请求,以及GET,POST请求参数(商业产品非常重要)全站HTTPS或者CSP 防止运营商内容劫持