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伪静态规则冲突了怎么办的解决方式。