
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
    expires 7d;
    valid_referers none blocked server_names  *.test.com ; //定义白名单
    if ($invalid_referer) {
        return 403;
    }//如果不是白名单里的就返回403
    access_log off;
}

location /admin/
{
    allow 192.168.133.1;
    allow 127.0.0.1;
    deny all;
}

location ~ .*(upload|image)/.*\.php$  //意思是匹配upload或者image目录下的.php文件
{
        deny all;
}
if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')
{
      return 403;
}
//deny all和return 403效果一样
location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock; //如果文件写错名字,访问的时候就会出现502
        //如果遇到502,就检查fastcgi_pass的地址Nginx跟php-fpm所配置的地址对应。
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name; //这个的路径要跟开头配置的root的路径对应。
//fastcgi_pass 用来指定php-fpm监听的地址或者socket
    }
配置后重新加载配置文件,访问php文件后可以解析:

一家公司有很多台服务器,为了节省成本,不能为所有服务器都分配公网IP,而如果一个没有公网IP的服务器要提供Web服务,就可以通过代理来实现

server
{
    listen 80;
    server_name ask.apelearn.com;
    location /
    {
        proxy_pass      http://121.201.9.155/; //指定要代理的域名所在的服务器IP,即Web服务器的地址
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
//这里没有root,因为它是代理服务器,不需要访问本地服务器上的任何文件

扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog.lishiming.net/?p=100