12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置 12.16 Nginx代理,nginx12.16


12.13 Nginx防盗链
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



相关内容

    暂无相关文章