使用Nginx做转发和匹配替换

Nginx是一个强大的服务器软件,由于处理数据内容处于第七层协议应用层的原因,所以获取的数据也比较完整;

Nginx做转发:

这个很简单,vi nginx.conf(编辑nginx配置文件)

添加location /public/sexy.jpg{//这个是你域名访问的图片

  proxy_pass http://www.tmp.jpg;#这个是你要替换的图片路径(加上http头)

}

保存退出,重启nginx 就可以看到原本项目 http://xxx/public/sexy.jpg变成了http://www.tmp.jpg这个图片,虽然在页面上看道德还是sexy.jpg;

nginx反向代理很牛逼吧,还有个更牛逼的就是sub filter这个nginx插件

将插件存放到tmp目录下面

cd /tmp

git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git

【PS:如果nginx安装过的,那么需要先找到编译目录(就是你安装nginx的安装包目录)】

cd /xxx/nginx-1.11.0(安装包目录)

./configure --prefix=/xxxx/nginx(nginx项目) --add-module=/tmp/ngx_http_substitutions_filter_module    #追加sub_filter插件

make

然后就会在nginx-11.0(安装包目录)/objs/nginx   更新nginx启动文件

cp 复制nginx-11.0(安装包目录)/objs/nginx    /xxxx/nginx(nginx项目)/sbin/nginx  替换掉就行了

vi  /xxxx/nginx(nginx项目)/conf/nginx.conf  编辑配置nginx

ps:我在网上看很多都是在 location /{}里面添加的,不过我试过都不行,只能在location外面  server里面配置才有效果

location里面没效果,location外面 server里面才有效;

subs_filter  需要替换的文本 结果的文本;//中间采用空格 隔开就行了

如果遇到 <a href=""> haha </a>有空格的文本,则用引用括起来

eg: ‘<a href=""> haha </a>‘ ‘<a href=""> xxiixixix </a>‘   //这样就行了

时间: 2024-08-10 00:05:51

使用Nginx做转发和匹配替换的相关文章

(转)nginx做转发时,带&#39;_&#39;的header内容丢失

原本在测试环境测试通过的APP,今天准备切到线上环境做最后测试,结果发现了错误.查看日志发现是APP端发送的http请求中的header内容丢失了.那么代码没有改动,怎么平白无故会丢失头信息? 于是想到两个环境的不同之处在于线上是通过nginx做的代理转发,会不会是nginx搞的鬼?于是搜索"nginx request header 丢失",果不其然是这个问题,nginx对下划线的头信息做了限制,找到问题所在就等于完成了一大半,办法总比困难多.遂决定记录之. - 方法一:不用下划线 既

Nginx做转发

二台服务器,服务器A做域名转外,所有外网的域名都到这台服务器A的80端口上,服务器B内网地址192.168.1.227, 上面IIS搭建了N多网站,以端口来区分,用以前的方式 配置转发 结果发现首页能打开,但是首页上的搜索按钮,后台代码用Response.Redirect跳转到其他页面后发现URL又自动带上端口地址, 经过一下午的问群里的朋友及不停搜索,终于解决!!!! 特此记录,以备不时之需!!!

Nginx负载均衡,反向代理,再从防火墙做转发后,css样式与端口丢失!

Nginx负载均衡,反向代理,再从防火墙做转发后,报错,用外网IP+端口访问,结果css样式与端口都丢失!!!!!内网IP+端口访问,正常! 解决思路:用chrome的network标签,分析项目的路径与端口!将配置文件中无用的干掉! 亲测改好的配置文件,注意注释信息!!!! vi conf/nginx.conf worker_processes  auto; worker_rlimit_nofile 10000; events {     worker_connections  2048;  

nginx中的location匹配规则介绍

简要概述 location匹配的几个命令的说明,如下 符号 说明 ~ 波浪线表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = 进行普通字符精确匹配 @ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files 具体详情,请参加官方文档 官方文档理解 前缀匹配 前面带有/或者/documents/的为前缀匹配.前缀匹

Zabbix 使用nginx做web服务

zabbix 使用nginx做web服务 逻辑图: yum  nginx装好,默认的default.conf文件直接backup掉,新建一个zabbx.conf文件, #如果有报错看下nginx_log 日志排错,zabbix3.0.4nginx转发依赖./php-fpm -v PHP 5.6.25,之前代理发现没用 报错也不是配置错误,查看官网发现是php-fpm版本问题. 10.10.254.25 zabbix_server服务器nginx配置: $ cat zabbix.conf  ser

Nginx中的一些匹配顺序总结

Nginx中经常需要做各种配置,总结如下: 1.server_name配置 nginx中的server_name指令主要用于配置基于名称虚拟主机,同一个Nginx虚拟主机中,可以绑定多个server_name,各个域名用空格隔开即可.如下: server { listen 80; server_name test.com www.test.com; ... ... } 如果server_name有多个,那么通过代码如$_SERVER["SERVER_NAME"]获取的始终将是Nginx

nginx做正向代理

Nginx常用来做反向代理,但是作为正向代理大家有没有试过呢? Nginx配置如下: server{        resolver x.x.x.x;        listen 82;        location / {                proxy_pass http://$http_host$request_uri;        }} 注意项:1. 不能有hostname2. 必须有resolver, 即dns,即上面的x.x.x.x,换成你们的DNS服务器ip即可3 .

用nginx做代理服务器上网

用nginx做代理服务器上网 目前现状:只有1个机器能上网(web),其他机器不能方法:能上网的做一个代理web服务器中转,其他机器连接它即可.采用nginx Nginx配置如下: server{        resolver x.x.x.x;        listen 82;        location / {                proxy_pass http://$http_host$request_uri;        }} 注意项:1. 不能有hostname2.

nginx做反向负载均衡,后端服务器获取真实客户端ip

开门见山,操作如下: 首先,在前端nginx上需要做如下配置: location / { proxy_pass http://test1; proxy_set_hearder host $host; proxy_set_header X-Real_IP $remoute_addr; proxy_set_header $proxy_add_x_forwarded_for; }; nginx会在把请求转向后台real-server前把http报头中的ip地址进行替换:这样操作完成后,real-ser