“Nginx” 标签页面:

  • 让nginx列目录及对目录进行密码保护

    1、如何让nginx列目录

    在对应的网站配置段中,加入:

    location /_files

    {

        root /home/blog.creke.net;

        autoindex on;

        autoindex_exact_size off;

        autoindex_localtime on;

    }

    解释一下:

    root是指当前的网站根文件夹,例子中列出的根目录其实是/home/blog.creke.net/_files目录,如果不填则沿用上层的root配置;

    autoindex是是否对该location匹配的目录在找不到索引文件(index.html、index.php等)时,列出目录,默认为off;

    autoindex_exact_size是是否输出准确的大小,如果on则输出byte单位的大小,off则用GB、MB、KB来近似表示,默认为on;

    autoindex_localtime是否以服务器时间输出文件时间,off则用GMT时间输出,默认为off。

    参考:http://wiki.nginx.org/HttpAutoindexModule

    2、对目录进行密码保护:

    在对应目录的location中加入:

    auth_basic "Creke Server Auth";

    auth_basic_user_file /usr/local/nginx/conf/htpasswd;

    其中auth_basic是验证时显示的标题,auth_basic_user_file是对应的用户名密码,一行一个,与apache的“.htpasswd”一样。

    参考:http://wiki.nginx.org/HttpAuthBasicModule

    最后,给出一个使用perl生成htpasswd中认证用户名密码的脚本,方便生成:

    #!/bin/bash
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    echo "====================================="
    echo "# A tool like htpasswd for Nginx    #"
    echo "#-----------------------------------#"
    echo "# MOD BY Creke                      #"
    echo "====================================="
    
    #set UserName
    
    	username=""
    	read -p "Please input UserName:" username
    	if [ "$username" = "" ]; then
    		echo "Error:UserName can't be NULL!"
    		exit 1
    	fi
    	echo "==========================="
    	echo "UserName was: $username"
    	echo "==========================="
    
    #set password
    
    	unpassword=""
    	read -p "Please input the Password:" unpassword
    	if [ "$unpassword" = "" ]; then
    		echo "Error:Password can't be NULL!"
    		exit 1
    	fi
    	echo "==========================="
    	echo "Password was: $unpassword"
    	echo "==========================="
    password=$(perl -e 'print crypt($ARGV[0], "pwdsalt")' $unpassword)
    
    echo "$username:$password"

    2012.10.28 / 暂无评论 / 2,665 次点击 / 分类: 所谓技术

  • StatusNet在Nginx下的rewrite规则

    StatusNet在Nginx下的rewrite规则。假设StatusNet装在abc.creke.net的sn目录下,访问地址为abc.creke.net/sn/,则其在Nginx下的rewrite规则如下:

    #StatusNet
    location /sn
    {
            try_files $uri $uri/ @statusnet;
    }
    location @statusnet
    {
            rewrite ^/sn/(.*)$ /sn/index.php?p=$1 last;
    }

    将其放在“server{}”块中靠前位置即可。

    如果不启用fancy url,这时会发现登录页面404,因为类似“abc.creke.net/sn/index.php/main/login”这类地址nginx不认为是需要交到php处理的地址。这时有两种解决方法。

    第一种,最简单的就是在config.php中加上开启fancy url的语句,同时按照上面说的配好rewrite:

    $config['site']['fancy'] = true;

    第二种,就是将上面的rewrite中的rewrite规则换成:

    rewrite ^/sn/index\.php\(.*)$ /sn/index.php?p=$1 last;

    好吧,除了我,谁那么无聊用第二种啊……用第一种呗。

    2011.08.16 / 暂无评论 / 2,254 次点击 / 分类: 所谓技术