# 把以下配置放到 server {} 块.
#关闭favicon.ico不存在时记录日志
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# 不允许访问隐藏文件例如 .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /. {
deny all;
access_log off;
log_not_found off;
}
nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。
nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
重新打开日志文...
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
本文以php-fpm为例介绍如何使nginx支持PHP
一、编译安装php-fpm
什么是PHP-FPM
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用...
nginx通过ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。
该模块需要PCRE支持,应在编译nginx时指定PCRE源码目录, nginx安装方法。
nginx rewrite指令执行顺序:
1.执行server块的rewrite指令(这里的块指的是server关键字后{}包围的区域,其它xx块类似)
2.执行location匹配
3.执行选定的location中的rewrite指令
如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件
如果循环超过10次,则返回500 Internal Server Error错误
break指令
语法:break;
默认值:无
作用域:server,location,if
...
把以下脚本保存为nginx文件放入/etc/init.d/nginx
然后可以通过
/etc/init.d/nginx start 命令启动nginx
/etc/init.d/nginx stop 命令停止nginx
/etc/init.d/nginx restart 命令重启nginx
开机自动启动nginx,
如果需要开机启动服务,保存好 /etc/init.d/nginx文件后,
执行以下命令:
chkconfig --add ningx
chkconfig --level nginx 2345 on
你也可以直接下载nginx启动停止脚本
---------------------分割线下是脚本内容,红色字体需要你修改-------------------------------------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local...
nginx 只允许某些域名访问 其他一律不能访问 ,是怎么写的?
对于这个问题可以参考官方文档
原文
In catch-all server examples the strange name “_” can be seen:
server {
listen 80 default_server;
server_name _;
return 444;
}
12345
server { listen 80 default_server; server_name _; &nb...
防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。
对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。
用rewrite有个前提需要知道,一般用rewrite进行正则匹配只能匹配到网页的URI,也就是url中?前部分,?以后部分是请求参数。
问号后面的请求参数,在nginx用$query_string表 示,不能在rewrite中匹配到,需要用if判断
例如,对于参数中带有单引号的'进行匹配然后定向到错误页面,
/plus/list.php?tid=19&mid=1124'
rewrite ^.*([;'<>]).* /error.html b...
nginx禁止访问所有.开头的隐藏文件设置
location ~* /.* {
deny all;
}
nginx禁止访问目录,
例如:禁止访问path目录
location ^~ /path {
deny all;
}
可以把path换成实际需要的目录,目录path后是否带有"/",带"/"只禁止访问目录,不带"/"禁止访问目录中的文件
转载请保留:http://blog.redis.com.cn/125.html
location 匹配命令
123456
~ # 波浪线执行正则匹配,区分大小写~* # 波浪线带星执行正则匹配,不区分大小写^~ # ^~ 普通字符匹配,如果该选项匹配,只匹配该选项,不匹配其它 location 选项,一般用来匹配目录= # 普通字符串精确匹配空 # 普通字符串匹配,例如 location /abc {}@ # "@" 定义一个命名的 location,使用在内部重定向时,例如 error_page, try_files
...
502错误是所有用nginx跑php的运维人员不愿意看见的
nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。
服务器出现502的原因是连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错
因此如果你服务器并发量非常大,那只能先增加机器,然后按以下方式优化会取得更好效果;但如果你并发不大却出现502,一...