Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理相关的知识,希望对你有一定的参考价值。

一:nginx防盗链

在 nginx.conf中的server部分中添加如下代码
location ~ ^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
valid_referers none blocked server_names
.taobao.com .baidu.com .google.com .google.cn .soso.com ; // 对这些域名的网站不进行盗链。
if ($invalid_referer) {
#return 403;
rewrite ^/ http://www.example.com/nophoto.gif;
}
}
说明:如果前面配置中已经加了 location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
}
那么会和这一部分重复,这时候上面的生效,所以,我们需要把两者合在一起。如下:
location ~
^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
expires 30d;
valid_referers none blocked server_names .taobao.com .baidu.com .google.com .google.cn *.soso.com ; // 对这些域名的网站不进行盗链。
if ($invalid_referer) {
#return 403;
rewrite ^/ http://www.example.com/nophoto.gif;
}
access_log off;
}
说明:盗用我们图片的人访问这些图片时会跳转到源路径,当然也可以直接显示403,即return 403,后者更节省资源。

二:Nginx访问控制

限制只让某个ip访问,加如下配置:
allow 192.168.1.101;
deny all;
禁止某个IP或者IP段访问站点的设置方法,首先建立下面的配置文件放在nginx的conf
目录下面,命名为deny.ip
cat deny.ip
deny 192.168.1.11;
deny 192.168.1.123;
deny 10.0.1.0/24;
在对应的虚拟主机配置文件中加入:
include deny.ip;
重启一下nginx的服务:
#/usr/local/nginx/sbin/nginx reload
deny.ip 的格式中也可以用 deny all;
如果你想实现这样的应用,除了几个 IP 外,其他全部拒绝,
那需要你在deny.ip 中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;
有时候会根据目录来限制php解析:
location ~ .(diy|template|attachments|forumdata|attachment|image)/..php$
{
deny all;
}

三:Nginx解析php相关配置

配置nginx配置文件,使其能够支持 php。
#vim /usr/local/nginx/conf/nginx.conf
找到
location = /50x.html {
root html;
}
在其后面新增如下配置:
location ~ .php$ {
root html;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
重新加载 /usr/local/nginx/sbin/nginx -s reload
创建测试文件:
#vim /usr/local/nginx/html/2.php
内容如下:
<?php
echo "test php scripts.";
?>
测试:
#curl localhost/2.php
test php scripts. [[email protected] nginx]#
显示成这样,才说明PHP 解析正常。

四:Nginx代理

#vim /usr/local/nginx/conf/vhosts/proxy.conf
加入如下内容:
server {
listen 80;
server_name aaa.com;

        location / {
            proxy_pass      http://2.2.2.2/;
            proxy_set_header Host   $host;
            proxy_set_header X-Real-IP      $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
                    #            access_log  /home/logs/aaa_access.log combined;
    }

说明:proxy_pass 后面跟要代理机器的ip。如果后端的机器有多台,还可以用 upstream
来实现负载均衡,该部分知识点以后再详细介绍,配置如下:
upstream bbb
{
server 1.2.3.1:80;
server 1.2.3.4:80;
}

server {
listen 80;
server_name bbb.com;

    location / {
            proxy_pass      http://bbb/;
            proxy_set_header Host   $host;
            proxy_set_header X-Real-IP      $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
            #           access_log  /home/logs/bb_access.log combined;

}

代理一个服务器上所有域名
首先在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件
两个文件内容分别为
(1) servername
server_name www.123.net.cn www.alsdjfl.com www.asdfa1.com; //就这么简单一行,当然这个server_name 还可以继续添加的

(2) 虚拟主机配置文件
server {
listen 80;
include vhosts/servername; // 这里的文件就是上边那个servername列表文件
location / {
proxy_pass http://1.2.1.2/; //这里就是需要做代理的服务器ip地址了
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /dev/null;
}

以上是关于Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理的主要内容,如果未能解决你的问题,请参考以下文章

四十九Nginx防盗链Nginx访问控制Nginx解析PHP相关配置Nginx代理

Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理

Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理

Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理

Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理

Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理