nginx反向代理配置详解 现在有很多站长把网站权重做上来后想盈利都会考虑做租目录给做黑帽SEO的人,而且站长都会使用宝塔搭建网站环境而linux做为比较常用的网站环境,大家经常会用到的web服务,那么nginx是怎么设置泛目录反向代理的呢?其实很简单,几行代码就可以搞定了。 本篇文章会依次列出反向代理泛目录、目录、整站反向代理的做法,耐心浏览本篇技术你会得到很大的提升。 首先找到你网站的配置文件。一般是放在 nginx目录/vhost/xxx.com.conf 中,找到之后,在里面添加上一段代码即可,使用宝塔的环境也需要在网站设置处配置文件。 注意:以下规则目录均为yanyu,也就是你租的目录名称,可以为app,等任意英文名称最佳; 有前缀二级泛目录反向代理代码如下: location /yanyu {proxy_pass http://你服务器ip地址/yanyu;proxy_set_header X-FORWARDED-HOST $host;} 或 location /yanyu { proxy_pass http://你服务器ip地址/yanyu; } 目录反向代理代码如下: location /yanyu { proxy_pass http://你服务器ip地址/yanyu/; } 整站反向代理代码如下: location / { proxy_pass http://www.***.com/; } 反向之后,如果css和JS没有正常的话,则需要删除一些代码 近期有客户反映使用nginx服务器,在伪静态规则没问题的情况下图片无法显示或者js/css无法正常加载; 详细分析了下客户服务器得知个别nginx环境配置里自动拦截图片及css/js文件。现给出解决方法如下: 在nginx配置文件里,删除那2段代码; 通常情况下是在nginx安装目录下的conf/nginx.conf文件,如果是宝塔面板,则nginx配置和站点配置里(登录宝塔点网站旁边的设置,可以看到)都要删除。 找到如下代码: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 1h;} 删除之后记得重启下nginx环境才会生效。 如果未生效,则看此篇文章 如果你的网站使用nginx环境配置,在添加了反向代理代码之后不生效。 仔细研究发现发现问题原因是rewrite伪静态规则优先级高于反向代理并且某些网站程序的伪静态规则,直接拦截了所有匹配导致。如 thinkphp,zblog,wordpress 等主流建站程序! 解决办法就是,给伪静态规则加上一个判断条件,把反向代理目录排除。 以下以thinkphp的伪静态规则做举例,thinkphp的默认rewrite伪静态规则如下: if (!-e $request_filename) {rewrite ^(.*)$ /index.php?s=$1 last;break;} 注意^(.)部分,把 ^(.) 改成 ^/(?!yanyu)(.) ,其中 yanyu改成自己的反代目录,如有多个用|分开: ^/(?!yanyu|app)(.) 修改后的代码就变成以下: if (!-e $request_filename) { rewrite ^/(?!yanyu)(.*)$ /index.php?s=$1 last; break; } 以上就是针对nginx添加反向代理代码不生效-与原rewrite伪静态规则冲突了怎么办的解决方式。
location / { if (!-e $request_filename){ rewrite ^(.*)$ /404.php; } }

额,这篇文章是bt(宝塔)面板来写的文章,其他的程序如果是wdcp管理面板也有添加shell脚本的功能,大鸟自己用的是bt(宝塔)面板,所以说说如何添加shell 脚本通过nginx日志封访问频率过高的IP,就是你的网站被攻击的一些简单的应对措施,当然了,这些网上也有很多其他的相类似的教程,大鸟这里就是整合到bt(宝塔)面板来说而已。 bt(宝塔)面板用起来方便点,面板管理里面刚好有一个添加shell脚本的功能,可以定时执行一些数据备份啊等等一些常见功能,下面来看下! 第一、打开宝塔管理面板点击计划任务 大鸟已经标注了红框,大家可以很清楚的看到,就是这个地方添加一些任务啊,如果需要可以仔细看看。 第二、添加shell脚本来封闭访问过高的ip #/bin/bash#日志文件路径logfile=/usr/local/tengine/logs last_minutes=1#开始时间start_time=`date -d"$last_minutes minutes ago" +"%H:%M:%S"`echo $start_time#结束时间stop_time=`date +"%H:%M:%S"`echo $stop_time#过滤出单位之间内的日志并统计最高ip数tac $logfile/access.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($4,RSTART+14,21);if(t>=st && t<=et) {print $0}}' \ | awk '{print $1}' | sort | uniq -c | sort -nr > $logfile/log_ip_top10 ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'` ip=`cat $logfile/log_ip_top10 | awk '{if($1>200)print $2}'`# 单位时间[1分钟]内单ip访问次数超过200次的ip通过ipset封锁for line in $ipdoecho $line >> $logfile/black.log ipset add blacklist $linedone 第三、设置shell脚本的执行时间 我们添加好了脚本需要设置在服务器中的执行时间,来看看如何设置 大鸟设置的是每天1点30分开始执行这个脚本程序来封掉访问过高的ip,如果需要修改执行时间,可以自己调整,bt(宝塔)面板给出了很多时间设置。 总结、输入任务名称,选择执行周期,输入执行的脚本内容。 注意事项: 输入脚本内容前请检查脚本内容,确保脚本的正常执行,否则将会导致,计划任务执行后,脚本执行错误。无法正常执行。 过程就是这样,其实也是很简单,只需要一段shell代码就可以解决很多问题。大鸟对于这些也只是懂的皮毛,只是把自己维护网站的一点心得分享给大家!
location ~ \.(zip|rar[7z|gz|ini|htm)$ {deny all;} 一般用于防止自己的模板被人恶意下载使用。也可以保护网站的备份文件不被人恶意下载。 还是很有用处的一段代码的
最近学到了一个nginx的安全规则,配置好了以后可以防止绝大多数的恶意请求。自己配置测试了一下觉得不错,感兴趣的小伙伴们可以尝试一下。 当然了,梦想之路在测试的时候发现也会出现一些小问题,主要就是自己的后台路径中带有admin,或者是其他一些正常的请求触发了规则,这个时候大家只要把它注释掉或者删除就好了。或者修改下面的nginx规则只留下自己想用的就可以了。 还有一个值得注意的是,使用cdn的同学要关闭“回源跟随”,一定要关闭,一定要关闭,一定要关闭回源跟随,不然的话cdn是会缓存并分发第一个规则中的这个10g文件的,造成流量损失。当然,直接返回404也可以。 #触发下面的规则返回一个10g的文件 if ($request_uri ~* "(\.gz)|(\")|(\.tar)|(admin)|(\.zip)|(\.sql)|(\.asp)|(\.rar)|(function)|($_GET)|(eval)|(\?php)|(config)|(\')|(\.bak)") { return 301 http://lg-dene.fdcservers.net/10GBtest.zip; } #禁止下载以 XXX 后缀的文件 location ~ \.(zip|rar|sql|bak|gz|7z)$ { return 444; } #访问链接里含有 test 直接跳转到公安网 if ($request_uri ~* test=) { return 301 https://www.mps.gov.cn; } #禁止一些不必要的爬虫 if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { return 444; }