我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

nginx有个非常好用的反向代理功能,可以作为中间第三人,连接两个世界。当然,正常情况下来说,大多数情况下,nginx的反代功能,就是个普通的运维命令,反向代理个node或者php之类的程序,是最常见的运维使用方式。但是,事实上,nginx的反代功能,也可以用于反代任何一个网站...

苏南大叔:宝塔面板的 nginx 如何设置反代功能?sub_filter 指令使用方法 - nginx
宝塔面板的 nginx 如何设置反代功能?sub_filter 指令使用方法(图2-1)

本文演示的两个站,都是苏南大叔的站。本次域名备案的事情,就是这两个域名交替操作备案的,完美合作。已经备案的域名newsn.com.cn,待备案的域名newsn.net

宝塔面板设置

因为数据代码都在newsn.net上面,所以,苏南大叔用的是newsn.com.cn去代理newsn.net。设置如图所示:

苏南大叔:宝塔面板的 nginx 如何设置反代功能?sub_filter 指令使用方法 - proxy
宝塔面板的 nginx 如何设置反代功能?sub_filter 指令使用方法(图2-2)

这里重点说明,以下几点:

目标URL、发送域名

目标URL发送域名,这两个的组合设置,会有些匪夷所思。不能用常理去推断这两个组合。苏南大叔是这么解读的:把发送域名替换到目标URL中的域名部分,才是真正常理意义上,大家所熟悉的网址。所以,如果你看到目标URL中的域名,没有证书的话,还写成https://的话,也不用奇怪。因为目标URL中的域名就仅仅是个解析IP的作用。

如果对方站点上也绑定了当前域名,那么请发送域名$host,否则请指定真实的域名。注意:在目标URL中写对应域名,是不会生效的!解释不清楚,大家仔细看。

  • 目标URL中的网址domain,仅仅起到的作用是代替IP的意思。所以,直接写IP也是可以的。而发送域名这个才是真正的域名,不能填写错误。当然默认值$host,就指的是面板中当前站点的域名了。

内容替换

注意:有且只有一对内容替换配置,这对儿词,在页面内可以匹配全部并匹配。这个是nginx本身的问题,新手小白会非常迷糊。因为大家的实际需求,肯定是要替换多组词汇的,而且肯定是要每组匹配值都替换掉的。但是,这个问题上,nginx的默认模块,就显得很无力了,只能配置一组词汇。

缓存

苏南大叔认为,还是默认启用缓存吧。不过,这个缓存与否。具体的效果,苏南大叔还没有试验出来,差别有多大。

nginx配置

配置好之后,反应到nginx的配置文件中,就是下面这个样子的:

这是付费可看内容,收费5元。

proxy_set_headersub_filter 以及 sub_filter_once

这里就是和普通的运维配置,不一样的地方了。一般的运维人员,是不会配置这2个值的。这2个值是默认的写法,但,并不是完美的写法。这里有几个说明问题:

  • xml文件是默认不参与文本替换的,这个将在下面说明解决。
  • 文本替换,只能替换一组,这个将在下一篇文章中解决。
  • sub_filter_once这个值,应该恒定设置为off,千万不能设置为on。因为最普遍的需求就是要替换所有文字。

proxy_cache

在宝塔面板的默认设置中,只对html|htm|png|gif|jpeg|jpg|bmp|js|css文件设置是否缓存,并且存在一个特殊的方法,来清除掉缓存,具体见上述配置中的proxy_cache开头的相关设置。

/purge/开头的链接地址,都是特殊处理,用于清楚缓存的。

总结

本文说的nginx反代,属于最基础最简单的部分,日常运维中,总常见的情况是:nginxsub_filter不生效。也就是说想替换的词没有被替换掉。这样的情况要怎么处理呢?请继续查看,苏南大叔的后续nginx经验文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   nginx    proxy