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