Nginx反向代理配置及反向代理泛目录,目录,全站方法
摘要:使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
整站反向代理
server { listen 80; server_name ***.com; location / { proxy_pass http://www.***.com/; } }
目录反向代理
server { listen 80; server_name ***.com; location /abc/ { proxy_pass http://ip/abc/; } }
有前缀二级泛目录反向代理
server { listen 80; server_name ***.com; location /abc { proxy_pass http://ip/abc; } }
使用proxy_redirect命令修改重定向数据包的位置字段。 在该示例中,根路径中的所有URL都将返回给nginx的/ my / path中的用户。 例如,如果服务返回的重定向数据包的位置是/ login,则用户在nginx代理之后接收的数据包的位置字段是/ my / login。 此时,浏览器将跳转到nginx的/ my / login地址进行访问。
请注意,服务返回的重定向数据包的位置字段有时会填充绝对路径(包括服务的IP /域名和端口)。 有时会填写相对路径。在这种情况下,您需要检查实际情况。
location /my/ { proxy_pass http://my_server; proxy_set_header Host $host:$server_port; proxy_redirect http://my_server/ http://$host:$server_port/my/; }
重定向消息代理
即使配置了nginx代理,当服务返回重定向数据包(http代码为301或302)时,重定向的目标URL地址也会放在http响应数据包的标题的位置字段中。 当用户的浏览器收到重定向消息时,它会解析该字段并进行跳转。 此时,新请求消息将直接发送到服务地址而不是nginx地址。 为了使nginx能够拦截此类请求,您必须修改重定向数据包的位置信息。
location /my/ { proxy_pass http://my_server; proxy_set_header Host $host:$server_port; proxy_redirect / /my/; }
上面的配置是将my_server服务的根路径下的所有路径代理到nginx地址的/ my / 路径。 当nginx配置只有一个服务器时,可以省略http:// $ host:$ server_port前缀。
消息数据替换
使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀。 例如:
典型的网页将包含类似的路径,如下所示:
/public:用于静态页面资源,如js脚本/public/js,样式表/public/css,图片/public/img等。
/static:和/public类似。
/api:用于后台服务API接口。
/login:用于登录验证。
其他。
对于这样的服务,可能的代理配置如下:
location /my/ { proxy_pass http://my_server/; proxy_set_header Host $host:$server_port; proxy_redirect / /my/; } location /login/ { proxy_pass http://my_server/public; proxy_set_header Host $host:$server_port; } location /public/ { proxy_pass http://my_server/public; proxy_set_header Host $host:$server_port; } location /api/ { proxy_pass http://my_server/api; proxy_set_header Host $host:$server_port; }
由于web页面或静态资源内写死了类似的绝对路径,那么对于用户来说,通过页面内的链接进行跳转时,都会请求到nginx服务对应的路径上。一旦存在另一个服务也包含类似的路径,也需要nginx进行代理,那么矛盾就出现了:访问nginx的同一个路径下的请求究竟转发给哪一个服务?
要解决这个问题,必须在用户收到报文前,将报文的数据中包含的绝对路径都添加统一的前缀,如/my/public,/my/api,/my/login,这样nginx代理配置则可以简化为:
location /my/ { proxy_pass http://my_server/; proxy_set_header Host $host:$server_port; proxy_redirect / /my/; } location /other/ { proxy_pass http://other_server/; proxy_set_header Host $host:$server_port; proxy_redirect / /other/; }
nginx的ngx_http_sub_module模块提供了类似的报文数据替换功能,该模块默认不会安装,需要在编译nginx时添加–with-http_sub_module参数,或者直接下载nginx的rpm包。
使用sub_filter对数据包进行替换的语法如下:
location /my/ { proxy_pass http://my_server/; proxy_set_header Host $host:$server_port; sub_filter 'href="/' 'href="/my/'; sub_filter 'src="/' 'src="/my/'; sub_filter_types text/html; sub_filter_once off; }
上面的配置用/ my /下的所有响应消息替换href =“/,用href =”/ my,src =“/用src =”/ my,这为所有绝对路径添加了一个公共前缀。
请注意,如果需要配置多个sub_filters,则必须确保nginx高于1.9.4版。 即便如此,sub_filter也无法解决所有问题。 当前流行的js框架将具有自动呈现URL的功能。 也就是说,许多绝对路径不是写在静态页面中,而是由js代码框架动态生成。 在这种情况下,sub_filter是无能为力的。 对于这种情况,作者只能真诚地建议,或者悄悄改变代码!
上一篇:微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
下一篇:phpcmsv9.6.3 后台拿webshell的几种方法及安全漏洞分析
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8784( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6237( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4270( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3773( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3442( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2515( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2248( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1947( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1828( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1770( 亮了