12.14 Nginx访问控制
12.15 Nginx解析php相关配置
12.16 Nginx代理
Nginx防盗链
vim /usr/local/nginx/conf/vhost/test.com
1.添加如下配置:
location ~* ^.+\.(gif|jpg|jpeg|png|bmp|swf)$ //定义格式
{
expires 7d; //缓存时间
valid_referers none blocked server_names *.etc.com; //白名单
if ($invalid_referer) { 条件
return 403; 返回结果
}
access_log off;
}
2. /usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
3.测试
curl -e "http://www.aaa.com" -x127.0.0.1:80 test.com/1.jpg -I
curl -e “http://www.etc.com” -x127.0.0.1:80 test.com/1.jpg -I
Nginx访问控制
和httpd一样,Nginx也需要限制某些IP不能访问或者只允许某些IP访问。和httpd不一样,他没有order顺序。
1.vim /usr/local/nginx/conf/vhost/test.com
添加如下配置
location /admin/
{
allow 193.168.142.5; //允许访问的IP
allow 127.0.0.1;
deny all; //除了以上2个IP,其他全部拒绝
}
2.
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
3.测试
curl -x192.168.214.128:80 test.com/admin/ //这个没加入白名单所以被拒绝了
curl -x127.0.0.1:80 test.com/admin/ //这个加入了白名单可以访问
如果你只想配置黑名单,只需要填写deny IP地址 就行了!
还有一种跟httpd类似的禁止PHP解析(一般用在图片上传目录)
1..vim /usr/local/nginx/conf/vhost/test.com
2.添加如下配置:
location ~.*(abc|zxc)/.*\.php$ //表示匹配abc或者zxc目录,并且.*PHP的请求拒绝访问
{
deny all;
}
3.创建
mkdir abc ;echo "1111" >abc/1.php
4.
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
5.测试:
curl -x127.0.0.1:80 test.com/abc/1.php
通过user_agent来进行限制
1..vim /usr/local/nginx/conf/vhost/test.com
2.添加配置
if ($http_user_agent ~ 'abc|qwe|zxc') //匹配abc、qwe、zxc的字符串都会拒绝
{
return 403;
}
3.
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
4.测试:
curl -A "abc" -x127.0.0.1:80 test.com //失败
curl -A “asdqwdwq” -x127.0.0.1 test.com //成功
Nginx解析php相关配置:
在LAMP中,PHP是作为httpd的一个模块出现,只要PHP模块被加载,那么就能解析PHP脚本了,而在LANP中,PHP是以一个服务(php-fpm)的形式存在的,首先要启动php-fpm服务,然后nginx再和php-fpm通信,也就是说,处理PHP脚本解析的工作是由php-fpm来完成的,nginx仅仅是一个搬运工,它把用户的请求传递给php-fpm,php-fpm处理完成后把结果传递回给nginx,nginx再把结果返回给用户。
1.vim /usr/local/nginx/conf/vhost/test.com
2.添加如下配置:
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock; \\指定PHP-fpm的地址,如果监听是tcp:port就要写tcp:port
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/nginx1$fastcgi_script_name; \\指定站点目录
}
3.
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
4.创建一个php文件进行测试
vim 1.php
<?php
phpinfo();
5.测试:
curl -x127.0.0.1:80 test.com/1.php
Nginx代理
1.创建一个配置文件
cd /usr/local/nginx/conf/vhost/
vim daili.conf
添加以下内容
server
{
listen 80; //端口
server_name ask.apelearn.com; //域名
location /
{
proxy_pass http://223.94.95.10/; //代理的服务器IP
proxy_set_header Host $host; //表示后端web的域名要与上面server_name域名保持一致
proxy_set_header X-Real-IP $remote_addr; //定义发往后端web服务器的请求头的客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //定义发往后端web服务器的请求头的代理服务器的IP
}
}
4.
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
5.测试
curl -x127.0.0.1:80 ask.apelearn.com -I