分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

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

发布时间:2023-09-06 02:10责任编辑:白小东关键词:配置
一: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. [root@localhost 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代理

原文地址:http://blog.51cto.com/10941098/2160804

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved