nginx 日志按日切割脚本

#! /bin/bash
datedir=`date +%Y%m%d`
/bin/mkdir  /home/logs/$datedir >/dev/null 2>&1
/bin/mv /home/logs/*.log /home/logs/$datedir
#/bin/kill -HUP `cat /var/run/nginx.pid`

nginx 实现域名的跳转


有时候有这样的需求,当两个或多个域名都可以访问同一个站点,但是我们想当访问B域名时,使其自动跳转至A域名。其实nginx很容易实现这样的功能:
(以下资料来源于互联网)
nginx中进行301重定向(301 redirect)是非常容易的。比方说要将www.caipanzi.com永久性重定向至caipanzi.com,有两种方法

1.方法A

server {
    server_name caipanzi.com www.caipanzi.com;

    if ($host != 'caipanzi.com' ) {
        rewrite  ^/(.*)$  http://caipanzi.com/$1  permanent;
        proxy_set_header Host "caipanzi.com";
    }
   
}
2.方法B(为带www的域名单独设一条server规则)

server {
    server_name  www.caipanzi.com;
    rewrite ^(.*) http://caipanzi.com$1 permanent;
}

用Nginx配置https加密站点

一、Nginx安装
安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块。
Nginx安装方法:
./configure --user=username --group=groupname --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

二、生成证书$ cd /usr/local/nginx/conf
$ openssl genrsa -des3 -out server.key 1024
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
三、修改Nginx配置:
server
{
listen 443;
server_name test.sina.com.cn;
ssl                  on;
ssl_certificate      /usr/local/nginx/conf/server.crt;
ssl_certificate_key  /usr/local/nginx/conf/server.key;
}

Nginx 404 跳转至首页

之前用Apache的时候,只需要设置

ErrorDocument 404 /404.php

就可以在 404.php 中根据不同的 REQUEST_URI 跳转到不同的页面去,让从搜索引擎过来的失效URL可以跳转到新的地址去

nginx 设置是这样的:

error_page 404  /404.php;

另外也可以通过rewrite规则实现

在 rewrite rule 的最后增加

if (!-e $request_filename) {
      rewrite ^(.*)$ /404.php last;
}

关于*.php 文件的跳转请看这里。

nginx 日志格式

log_format main '$remote_addr - $remote_user [$time_local] $request '
                    '"$status" $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';



log_format main1 '$proxy_add_x_forwarded_for - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"';  //此日志格式为,ip不仅记录代理的ip还记录远程客户端真实IP。

Nginx 状态配置


location /NginxStatus {
                        stub_status             on;
                      access_log              on;
    #                      auth_basic              "NginxStatus";
   #                     auth_basic_user_file  conf/htpasswd; //查看时需要验证
                }


注: 以上代码可以加在虚拟主机中的配置文件中
访问:http://域名/NginxStatus/

Nginx的Rewrite设置及示例

出处:http://shunz.net/2008/07/nginx_rewrite.html
Nginx以其良好的并发性能,目前正在逐渐取代Apache成为大家的Web server首选,但是Nginx目前的中文资料很少,需要大家努力贡献。

下面我介绍一下Nginx的Rewrite模块设置及Wordpress和Discuz的示例。Nginx的Rewrite规则比Apache的简单灵活多了,从下面介绍可见一斑。

首先,Nginx可以用if进行条件匹配,语法规则类似C,举例如下:

if ($http_user_agent ~ MSIE) {rewrite  ^(.*)$  /msie/$1  break;}1、正则表达式匹配,其中:

~  为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
2、文件及目录匹配,其中:

-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
如:

if (!-f $request_filename) {proxy_pass  http://127.0.0.1;}其次,Nginx的Rewrite规则与Apache几乎完全一致,所不同的是最后的flag标记,举例如下:

rewrite ^/feed/$ http://feed.shunz.net last;

flag标记有:

last 相当于Apache里的[L]标记,表示完成rewrite,不再匹配后面的规则
break 与last类似
redirect 返回302临时重定向
permanent 返回301永久重定向
Wordpress的重定向规则:

if (!-e $request_filename) {rewrite ^/(index|atom|rsd)\.xml$ http://feed.shunz.net last;rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;rewrite ^ /index.php last;}

nginx 访问需要用户验证


1 首先需要安装apache,可以使用yum install 安装
2 生成密码文件,创建用户
htpasswd -c /usr/local/nginx/conf/htpasswd  test // 添加test用户,第一次添加时需要加-c参数,第二次添加时不需要-c参数
3 在nginx的配置文件中添加
location  / {
                      root /data/www/wwwroot/count;
                      auth_basic              "Auth";
                      auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
            }

Nginx出现413 Request Entity Too Large得解决方法

解决方法:打开nginx主配置文件nginx.conf,找到http{}段,添加
client_max_body_size 20m;

nginx 日志切割(按小时)


vim /usr/local/nginx/sbin/log.conf  //写入以下内容

rotate 48
nocompress

/home/logs/access.log {
    sharedscripts
    create 0644 www www
    postrotate
        /bin/kill -USR1 `cat /usr/local/nginx/var/nginx.pid`
        LDATE=`date +%Y%m%d%H --date="-1 hour"`
        /bin/mv /home/logs/access.log.1 /home/logs/${LDATE}-access_log
    endscript
}

nginx整套pdf電子文檔,挺不錯的

不說廢話了 直接上傳了,第一章是介紹Nignx 和Nginx和其他web server性能對比的個人認為實用性不強就不上傳了,第13章是HTTP模塊 因為太大了 就不傳了,其實說白了,大家把前幾章搞懂了 就已經不錯了,如果有朋友需要第一章和第十三章的朋友可以留下email或者向我索取,我的email:[email protected]

nginx代理一个服务器上所有域名

http://mylinux.5d6d.com/redirect ... o=lastpost#lastpost

nginx禁止某个IP或者IP段访问站点的设置方法

首先建立下面的配置文件放在nginx的conf目录下面,命名为deny.ip   
cat  deny.ip
deny 192.168.1.11;
deny 192.168.1.123;
deny 10.0.1.0/24;

在nginx的配置文件nginx.conf中加入:include deny.ip;

重启一下nginx的服务:/usr/local/nginx/sbin/nginx  reload 就可以生效了。

deny.ip 的格式中也可以用deny all;
如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
那需要你在deny.ip 中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;

用nginx代理一个服务器上所有域名

http://mylinux.5d6d.com/viewthre ... mp;fromuid=1#pid388

禁止某个目录下php解析

location ~ .*abc/.*\.php?$
        {
         deny all;
        }