nginx根据url参数动态代理

2023-11-17

nginx根据url参数动态代理

请求url格式,其中参数proxy后面的url就是需要访问的真实地址:
http://localhost:9388/?proxy=http://localhost:8038/Content/layui/font/iconfont.woff?v=256
http://localhost:9388/?proxy=http://localhost:8072/article/ArticleInfo/12309f4e71be45bf943f5b1346162e42
http://localhost:9388/?proxy=http://localhost:8038/user/login
http://localhost:9388/?proxy=http://99.89.11.137:8833/

windows版本的nginx:

server {
		listen  9388;
		server_name  localhost;	
	 	 resolver   192.168.2.1;    # 配置DNS
	 	# resolver   192.168.2.234;	  
		
			# 申明变量
			set   $realHost    "333";		 
			set 	$backend_host   "333";	
 
		#获取url的域名
	 	if ($arg_proxy ~ ^(http(s)?://)?([^/?]*)(.*)?$ ){
	 		set 	$backend_host	 $3;
	 	}
					
					#解析真实后台地址域名,针对于请求css、js文件 
					if ($http_referer   ~*     proxy=(http(s)?://)?([^/?]*)(.*)?$	){
				 				set   $realHost     $3;
				 	}

		 	        #  当下载css文件里面的相对路径文件时,会出现500错误	
					# 比如http://localhost:9388/Content/layui/font/iconfont.woff2?v=256		
				    if (	$realHost   =   "333"	){
						 set   $realHost     $cookie_cookieHost;
					} 
			 
	 	location  /  {	
			  	proxy_set_header 	Host	 						 $backend_host;
	 			proxy_set_header    X-Real-IP   	 		     $remote_addr;
	 			proxy_set_header    X-Forwarded-For   	 $remote_addr;
			    proxy_set_header		whl_host	 			     $backend_host;			    
							 
			  #自定义响应头
			   add_header 		whl_host 	 $backend_host; 
			   add_header 		whl_url 	 $arg_proxy; 		 
		
		
						# 请求图片、css、js		 
						if  (  $http_Sec_Fetch_Dest   ~*   (image|script|style|font)   	)
						{						
								add_header 		whl_file_host 	 $realHost; 
								add_header 	    whl_file_url	     $uri;	
								
								proxy_pass	  http://$realHost;  	#	有效
								break; 
						}
						
					#  接口请求
					if ( $http_X_Requested_With   ~*   XMLHttpRequest  )
					{			
						add_header 		whl_XMLHttpRequest_host 	 $realHost; 
						add_header 	    whl_XMLHttpRequest_url	     $uri;	
						
						proxy_pass	   http://$realHost;	 	
						break; 				  
					}		
			  
			      # 初次请求页面document
				  if ( $arg_proxy ){					  
					  add_header   	Set-Cookie 	 'cookieHost=$backend_host;path=/;';		
					  add_header 	 whl_arg_proxy	     $arg_proxy;	
						
					 proxy_pass	   	$arg_proxy;	 
					 break; 					 
				  }
			  
			       proxy_pass	   http://$realHost;	 	 				 
	 	}		 
		
		 
	#		 	# location   ~* \.(js|css|gif|jpg|jpeg|jfif|png|bmp|swf|ico|woff2|woff|ttf|mp4|flv)$
	#			 location   ~* \.(js|css|swf|woff2|woff|ttf|mp4|flv)$
	#		 	 {		 
	#		 		proxy_next_upstream 	http_502 	http_504 	error 	timeout 	invalid_header;
	#		 		proxy_set_header		whl_host	 				$backend_host;
	#		 		proxy_set_header		whl_url	 	 				$arg_proxy;
	#		 		proxy_set_header  	Host  						$backend_host;
	#		 		proxy_set_header 	X-Forwarded-For 		$remote_addr;
	#				proxy_set_header     X-Real-IP   	 		 	$remote_addr;
	#		 		
	#		 		  #自定义响应头				
	#		 			add_header 	whl_host 	 					$backend_host; 
	#		 			add_header 	whl_url 	 					$arg_proxy; 
	#		 			add_header 	whl_req_url					$query_string; 
	#		 			add_header 	whl_http_referer			$http_referer; 
	#		 			add_header 	whl_real_host					$realHost; 		 		 	 
	#		 		 	add_header 	whl_get_cookieHost			$cookie_cookieHost; 
	#		 		 	add_header 	whl_http_Accept			$http_Accept; 
	#					add_header   	whl_Sec_Fetch_Dest 	 $http_Sec_Fetch_Dest;			    
	#		 			
	#		 	     proxy_pass			 http://$realHost;  #有效
	#					  
	#		 	  }	 

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx根据url参数动态代理 的相关文章

随机推荐

  • 谷歌chrome浏览器的源码分析(一)

    随着网络技术的发展 越来越多应用都已经离不开网络 特别像人类大脑一样的知识库的搜索引擎 更加是离不开功能强大的云计算 不过 即便云计算非常强大 但它还不能直接地把结果呈现给用户 这样就需要一个客户端来呈现出来 这个客户端就是浏览器 现在越来
  • 归并排序(分析与模板)

    归并排序 思路 1 确定分界元素mid left right 2 2 递归分解数组 两两组合组成两个有序数组 3 归并 合二为一 int temp 100010 merge sort int num int l int r if l gt
  • std::thread线程命名

    也可以参考我另外一篇文章 另外一篇更详细些 为线程设置名字的最大的好处是在程序出错时 它会出现在 GDB 的出错信息里 可以更快地定位问题 有两种方法可以给线程设置名字 一种在线程的调用函数内部设置 还有一种是在外部对指定线程变量做设置 i
  • 【软件测试】未来软件测试必备的8大技能,你缺少哪几个?

    软件测试工程师是个神奇的职业 他是开发人员与老板之间的传话筒 三夹板 也是开发人员与老板的好帮手 他不仅需要有销售的沟通能力 也需要具备编辑人员的文档撰写技巧 如此一个面面俱到的岗位 他需要具备的技能到底有哪些呢 有逆向思维的能力 曾经采访
  • 算法:两个有序数组合并成一个有序数组 java语言

    题目 有两个有序数组a 和b 将它们合并成数组c 需要c 也是有序数组 思路 新建一个以两个集合长度之和为长度的新数组 从两数组最左边开始比起 把小的放入新集合 并用变量标记后一位置 每次比较都是比较的最左边未比较过的元素 通过变量 循环比
  • 分享一个可交互的小场景(二)

    先看效果 可互动的小场景 再看代码 JS部分
  • 正点原子I.MX6ULL开发板车牌识别项目实战 1

    1 项目总体概述 下图为 车牌识别项目 的系统框图 借助这个框图 简要介绍项目的总体思路和所需要做的准备工作 1 1 总体思路 通过摄像头采集图像信息 并将图像信息传递开发板 这里使用的是OpenCv 开发板收到图像信息之后 通过定时器 周
  • Python解决ModuleNotFoundError: No module named 'Queue'的问题

    我们知道Python2和Python3两个版本之间 有些不兼容的地方 Python3中引入Queue会报出这个问题 Python3中要这样引入 1 import queue Python2中要这样引入 1 import Queue 为了兼容
  • 第十六课,面剔除

    使用OpenGL的面剔除选项 它默认是禁用状态 glEnable GL CULL FACE 直接运行后 我们发现正方体的部分面确实被剔除了 但是却不是背向面 这是因为我们定义的正方体并不是严格遵循逆时针顺序定义的 原理详见教程 这里就不过多
  • python输出文本 去掉引号,如何从导出的python列表中删除逗号,引号和括号?

    You guys were super helpful with my last newbie question so I figured I would give it another shot Right now my Python 3
  • 基于范围的for循环

    一 基于范围的for循环 C 11 1 范围for的语法 2 范围for的使用条件 二 指针空值nullptr 一 基于范围的for循环 C 11 1 范围for的语法 对于一个有范围的集合而言 由程序员来说明循环的范围是多余的 有时候还会
  • 智能聊天机器人实现(源码+解析)

    前言 之前写了一篇 美女图片采集器 源码 解析 得到了众多朋友的支持 发现这样系列的教程还是挺受欢迎的 也激励我继续写下去 也在那一篇文章中提过 美女图片采集只是我先前那个完整APP中的一个功能罢了 还有其他几个比较好玩的尚未开源 之后有时
  • QWidgetAction实现鼠标滑过菜单项图标高亮显示

    需求是鼠标滑过菜单项时 菜单项的文字 icon以及子菜单的小箭头都要高亮显示 qss中只能设置item背景色 文字颜色以及子菜单小箭头的样式 icon的图片不能切换 另外曾经想过用indicator 对action setCheckable
  • Ubuntu18.04安装QT5

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 QT5是什么 二 安装包安装 1 下载安装包 2 安装QT5 3 运行 4 其他方式 总结 前言 最近在学习QT5 在Windows上的安装自然不必多说
  • 爬虫 — 反爬

    目录 一 UA 反爬 二 Cookie 验证与反爬 1 Cookie 简介 2 使用 Cookie 原因 3 Cookie 作用 3 1 模拟登录 3 2 反反爬 三 Referer 反爬 一 UA 反爬 UA User Agent 用户代
  • [机械]“重工业面临两大危机”——向文波(三一重工股份有限公司执行总裁)

    向文波 三一重工股份有限公司执行总裁 向文波是三一重工的掌门人 但深受徐工事件影响 他以业内的视角 适时地向中国重工业的改革发出一个警示信号 提出一个超越 抓大放小 国进民退 等传统国企改革的新命题 产业安全 引起了舆论与政府的重视 中国重
  • 2021.11.13-15总结

    将C语言文件相关的内容学完了 了解了文件相关的函数
  • linux网络管理

    一 网络接口 1 在Linux系统中 主机的网络接口卡通常称为网络接口 使用ifconfig命令来查看网络 2 eth0 是Linux系统中第一块以太网卡的名称 3 lo 是Linux系统中的 环回 网络接口 lo 并不代表真正的网络接口
  • 用户访问session分析-按session粒度进行数据聚合

    思路 之前模拟创建了两张表 user visit action 和 user info 对于user visit action表 1 通过用户传过来的指定日期范围内 从user visit action中查询出指定的用户访问数据 变成 ac
  • nginx根据url参数动态代理

    nginx根据url参数动态代理 请求url格式 其中参数proxy后面的url就是需要访问的真实地址 http localhost 9388 proxy http localhost 8038 Content layui font ico