存档

‘nginx’ 分类的存档

nginx的404错误empty_gif用法

2010年7月13日 eric 21 条评论

nginx 的 404 403 500 502 503 错误 使用 empty_gif 来隐藏

模块说明:
ngx_http_empty_gif_module 本模块在内存中常驻了一个 1×1 的透明 GIF 图像,可以被非常快速的调用。

示例:

location = /_.gif {
empty_gif;
}

可能你需要,发生 403 错误 404 错误 502 错误,不想让别人看到错误,你可以选择用别的页面或者一张图片来显示,在你编译nginx的时候如果你没关掉ngx_http_empty_gif_module 这个模块的话,完全可以使用empty_gif模块,因为他驻在了内存里,访问速度很快,就不需要你在磁盘上找个图片了~只是这个图片是透明的·呵呵但是你达到你不需要别人能看到你的错误了。

分类: nginx 标签: ,

nginx server_name 设置

2010年6月1日 eric 273 条评论

在看博客访问明细的时候发现有人直接用IP 访问我的博客,看上去很不爽,有点好像站点被别人拿下的感觉,然后就在nginx官方网站看了一下,可以禁止直接IP访问,所以我就记录下。官方原文: If you do not want to process requests with undefined “Host” header lines, you may define a default server that just drops the requests: server { listen 80 default_server; server_name _; return 444; } 我加的配置: server { listen 80 default_server; server_name _; rewrite ^ http://www.nginxs.com$request_uri?; } 直接返回错误不好吧,毕竟还是想让别人来访问送IP的,呵呵!!! 随后还看到 server_name 支持 正则表达式,如果这样的话,就很容易让二级域名对应相应的目录了,做了一下测试,效果不错。 server { [...]

分类: nginx 标签: ,

转发:Nginx文件类型错误解析漏洞

2010年5月24日 eric 95 条评论

其实此漏洞并不是Nginx的漏洞,而是PHP PATH_INFO的漏洞,详见:http://bugs.php.net/bug.php?id=50852&edit=1 例如用户上传了一张照片,访问地址为http://www.domain.com/images/test.jpg,而test.jpg文件内的内容实际上是PHP代码时,通过http://www.domain.com/images/test.jpg/abc.php就能够执行该文件内的PHP代码。 网上提供的临时解决方法有:   方法①、修改php.ini,设置cgi.fix_pathinfo = 0;然后重启php-cgi。此修改会影响到使用PATH_INFO伪静态的应用,例如我以前博文的URL:http://blog.s135.com/read.php/348.htm 就不能访问了。   方法②、在nginx的配置文件添加如下内容后重启:if ( $fastcgi_script_name ~ \..*\/.*php ) {return 403;}。该匹配会影响类似 http://www.domain.com/software/5.0/test.php(5.0为目录),http://www.domain.com/goto.php/phpwind 的URL访问。   方法③、对于存储图片的location{…},或虚拟主机server{…},只允许纯静态访问,不配置PHP访问。例如在金山逍遥网论坛、SNS上传的图片、附件,会传送到专门的图片、附件存储服务器集群上(pic.xoyo.com),这组服务器提供纯静态服务,无任何动态PHP配置。各大网站几乎全部进行了图片服务器分离,因此Nginx的此次漏洞对大型网站影响不大。 本人再提供一种修改nginx.conf配置文件的临时解决方法,兼容“http://blog.s135.com/demo/0day/phpinfo.php/test”的PATH_INFO伪静态,拒绝“http://blog.s135.com/demo/0day/phpinfo.jpg/test.php”的漏洞攻击: location ~* .*\.php($|/) { if ($request_filename ~* (.*)\.php) { set $php_url $1; } if (!-e $php_url.php) { return 403; } fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; }   也可将以下内容写在fcgi.conf文件中,便于多个虚拟主机引用: if ($request_filename ~* (.*)\.php) { set $php_url [...]

分类: nginx 标签: , ,

phpMyAdmin – 错误

2010年5月19日 eric 83 条评论

今天,安装了一个 nginx +php-fpm 的环境,安装上了 phpmyadmin,发生了错误。找了好久原因,才找到,因为自己的大意,才会成这样,错误如下: phpMyAdmin – 错误 无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。 当时看到这个错误,第一感觉 mysql 没有起来吗?检查起来了,然后检查 mysql.sock 的路径与php 的路径,也没有问题。 随后想到,也许是php没有编译好吗?创建一个 phpinfo(); ,访问没有问题,那好,那就看看 info 哪里有问题,看了一圈没发现什么问题,php.ini 加载路径没错。 最后看看 phpmyamdin 的配置文件吧。看到他要建立 session。然后去 session 保存目录看一下。问题就找到了。。我的 php-fpm 设置的 session 保存目录是 /home/www/sessions, 我创建的目录是 /home/www/session 少了一个 s 大家也要注意权限。要给 php-fpm 写的权限。 PS:以后配置环境的时候一定要细心。。一个问题纠缠了我 2个多小时,很是郁闷。

分类: nginx 标签: , ,

php-fpm with php-5.3.2 + APC

2010年5月17日 eric 109 条评论

php-fpm 现在php官方内部已经出版本了,据说以后会出现在 php core 里,如果现在安装的话,可以svn得到最新代码,我抢先为快。

至于缓存,我用的facebook 试用的apc 测试了一段时间还很,满意。

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.bz2

wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz

wget http://pecl.php.net/get/APC-3.1.3p1.tgz
tar zxvf pcre-8.02.tar.bz2

cd pcre-8.02

./configure --enable-utf8 --enable-pcregrep-libbz2

make

make install
分类: nginx 标签: , , ,

nginx keepalived 双机互备

2010年4月20日 eric 47 条评论

以前写过一篇,nginx+keepalived 双机互备的文章,写那篇文章的时候没有想过如果apache或者nginx挂了,而 keepalived 或者 机器没有死,那么主辅是不会切换的,今天就研究了一下该如何监控 nginx进程呢,看官方站看到了。vrrp_script 功能,但是用他的方法实在形不通,可能是我的方法不对,或者是个BUG。所以后来我自己写了个小脚本来完成工作。

环境

Server 1 : ubuntu-server 8.04.4 www.nginxs.com

Server 2 : userver-server 8.04.4 192.168.6.188

软件

Keepalived 1.1.15

nginx-0.8.35

pcre-8.02

1.分别在两台服务器上安装nginx

tar jxvf pcre-8.02.tar.bz2

cd pcre-8.02

./configure --prefix=/usr --enable-utf8 --enable-pcregrep-libbz2 --enable-pcregrep-libz

make

make install
分类: nginx 标签: , ,

nginx 多个虚拟主机 no input file specified

2010年4月19日 eric 46 条评论

今天配置nginx rewrite 的时候遇到一个问题,就是访问服务器的是时候提示 No input file specified.访问PHP,访问php就没有事,可以正常访问。猜想可能是php-cgi的问题吧,google 了一下,果然问题出现在这里。

网上提供的解决方法:

1、 php.ini(/usr/local/php/etc/php.ini)的配置中这两项
cgi.fix_pathinfo=1 (这个是自己添加的)
doc_root=

2、nginx配置文件/usr/local/nginx/conf/nginx.conf 中注意以下部分
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/www.abc.com/$fastcgi_script_name;
include fastcgi_params;
}

红字部分是虚拟主机的根目录。然后重启 php-fpm 和nginx

我只实践了第二种方法,方法如下:

分类: nginx 标签: , ,

nginx的proxy_cache缓存取替Squid

2010年4月14日 eric 10 条评论

早就看到nginx wiki 有提到 proxy_cache,由于一直没有看到大家对他报有身好评,所以一直也没有做测试,今天闲下来,开了两个虚拟机测试了一下,效果不错,后期准备实战一下。

Nginx proxy_cache 缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非 200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面,但是,通过一个第三方的Nginx 模块,可以清除指定URL的缓存。

测试环境:

www.nginxs.com nginx-proxy_cache

192.168.6.188 nginx

1. 下载编译安装 nginx

Wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.bz2

Tar jxvf pcre-8.02.tar.bz2

Cd pcre-8.02

./configure –prefix=/usr –enable-utf8 –enable-pcregrep-libbz2 –enable-pcregrep-libz

Make

Make install

wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz

Tar zxvf ngx_cache_purge-1.0.tar.gz

分类: nginx 标签: , , ,

Nginx + php-5.3.1 + mysql-5.1.45 for vps 256内存

2010年3月23日 eric 70 条评论

刚买的 VPS 因为内存太小,所以各个方面都要优化!mysql 用的 mysqlnd 方式连接。

参考文章:www.s135.com

本人VPS系统 :ubuntu-server-9.04

安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为ubuntu-server)

  一、获取相关开源程序:
  1、【适用ubuntu操作系统】利用ubuntu Linux系统自带的apt-get命令安装、升级所需的程序库:

apt-get install build-essential autoconf automake libtool libjpeg62-dev libpng12-dev libfreetype6-dev libxml2-dev libbz2-dev libncurses5-dev libcurl4-openssl-dev curl openssl bison libsasl2-dev
  2、下载程序源码包:
  ①、从软件的官方网站下载:

cd /home
wget http://sysoev.ru/nginx/nginx-0.8.34.tar.gz

分类: linux, mysql, nginx 标签: , , , , ,