分类目录归档:nginx

解决百度蜘蛛爬行造成服务器负载过高问题

给客户一直在运营一个网站,刚开始的时候网站访问速度还不错、接近秒开。但随着时间长了以后发现网站速度越来越来、服务器的负载也越来越高。

打开服务器发现Mysql的CPU资源占用过高,分析原因是网站的并发太多,查看网站的访问日志,发现大多数百度蜘蛛在访问。网站一天的PV在15万次,百度蜘蛛的访问在一天200万次左右。这个数字真让我害怕,相当同时一秒访问人数20多人,我单台服务器,而且运算比较复杂,Mysql压力比较大,访问高了就会负载大。

继续阅读

本文已经被查看626次

远程访问到本地开发机

在调试一些接口的时候,你的网站应用要跟其它的一些外部服务进行交流,你发给它一点数据,它也会返回给你一点数据。

但是如果是在本地开发环境上调试,你只能发送给外部服务数据,而外部服务返回来的数据你的本地环境是收不到的。因为你的本地环境并没有一个固定的公网 IP 地址。

我不想直接在服务器上去调试,因为复杂而且不方便,忽然想到了之前用过的 BrowserSync 工具,有一个 Tunnel 选项,可以把在本地创建的服务器公布到互联网上。我又想到了 SSH 有个 Tunnel 功能,原来用它作为本地电脑的代理用,我想大概可以用它,让我的在公网上的一台服务器接待请求,再把请求转到我的本地开发环境上,然后就去搜索关键词 NGINX,SSH,Tunnel ,找到了答案。
继续阅读

本文已经被查看466次

nginx+php-fpm支持pathinfo

nginx配置

nginx站点配置文件如下:

server {
        listen       80;
        server_name  devkang.com;
        root  /www/devkang.com/;
        location / {
            try_files $uri $uri/ /index.php$uri?$args;
            index  index.html index.htm default.html default.htm index.php default.php;
        }
        autoindex off;
        include advanced_settings.conf;
        location ~ ^.+.php {
            fastcgi_pass   bakend; ##此处填写本机PHP的地址跟端口,根据各自情况进行设置。
            fastcgi_index  index.php;
            fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
            fastcgi_param  PATH_INFO $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
            include        fastcgi.conf;
        }
        }
}

创建配置文件以后重启nginx。

测试

在目录下创建index.php,编辑如下代码

<?php
print_r($_SERVER);

访问地址:http://localhost/index.php/pathino或者http://localhost/pathinfo

都应该打印变量PHP_SELF的值为pathinfo即为成功。(pathinfo与url路径中的pathinfo一致即可!)

本文已经被查看625次

网站禁止访问.git、.svn等目录

如果你用过Git、SVN等代码版本控制工具的话,那肯定会知道,如果你需要拉去最新的代码到本地时,会自动生成一个.git或者.svn文件夹,里面包含一些项目相关的信息,如果在部署项目是,把这些文件公开暴露在外网中,可能会有一些安全隐患,所以我们通常会想一些方法来禁止访问这些文件夹。

Apache服务器中,开启Rewrite模块后,可以使用.htaccess文件来控制文件及文件夹的访问,根据这个原理,我们可以使用配置.htaccess文件禁止访问.git、.svn等目录。打开.htaccess文件,添加如下代码:

RewriteEngine on
RewriteRule ^.git - [F,L]

在nginx服务器中

location ^~ /.git {
    deny all;
}


这样,即可禁止.git文件夹的访问,对应,如果不想公开.svn文件夹的访问,则将.git换成对应的.svn即可。当然,如果你还有一些日志文件夹、隐秘文件夹,也可以通过这样的方式来实现文件夹访问权限的控制。

本文已经被查看566次