热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

匿名化Amazon公共URL,使用Nginx上的脚本进行解码-AnonymizeAmazonpublicURL,decodeusingascriptonNginx

IhavebeenwonderingifitspossibletoanonymizepublicURL.Whenusermakesarequestwiththisa

I have been wondering if its possible to anonymize public URL. When user makes a request with this anonymized public URL, let Nginx decode, fetch and serve the URL.

我一直在想是否可以匿名公共URL。当用户使用此匿名公共URL发出请求时,让Nginx解码,获取并提供URL。

Example

Public URL http://amazon.server.com/location/file.html

公共URL http://amazon.server.com/location/file.html

Anonymized URL https://amazon.server.com/09872340-932872389-390643289/983724.html

匿名网址https://amazon.server.com/09872340-932872389-390643289/983724.html

Nginx decodes 09872340-932872389-390643289/983724.html to location/file.html

Nginx将09872340-932872389-390643289 / 983724.html解码为location / file.html

Added image below for further clarification. Nginx has a reverse logic to decode, whereas Remote Server has the logic to Anonymize URL.

添加了下面的图片以进一步说明。 Nginx具有解码的反向逻辑,而远程服务器具有匿名URL的逻辑。

enter image description here

Question All I need to know is how would Nginx decode anonymized URL? Nginx got anonymized URL request. There has to be a way to decode it.

问题我需要知道的是Nginx如何解码匿名URL? Nginx获得了匿名URL请求。必须有一种方法来解码它。

3 个解决方案

#1


1  

This is an answer to the updated question:

这是对更新后问题的回答:

Question All I need to know is how would Nginx decode anonymized URL? Nginx got anonymized URL request. There has to be a way to decode it.

问题我需要知道的是Nginx如何解码匿名URL? Nginx获得了匿名URL请求。必须有一种方法来解码它。

Nginx would make a request to a script, e.g., either through proxy_pass or fastcgi_pass et al.

Nginx会向脚本发出请求,例如通过proxy_pass或fastcgi_pass等。

The script could decode the URL and provide the actual URL through a Location HTTP Response Header with a 302 Found HTTP Status.

该脚本可以解码URL并通过具有302 Found HTTP Status的Location HTTP Response Header提供实际的URL。

Nginx would then have the decoded URL stored in the $upstream_http_location variable. It could subsequently be used in another proxy_pass et al within a named location @named, to which you could redirect the processing of the original request from the user through error_page 302 = @named.

然后,Nginx将解码的URL存储在$ upstream_http_location变量中。它随后可以在命名位置@named内的另一个proxy_pass等中使用,您可以通过error_page 302 = @named将用户的原始请求的处理重定向到该位置。

In all, each user request would be processed twice within nginx, but it'll all be transparent to the user -- they simply receive the resource through the original URL, with all redirects being done internally within nginx.

总之,每个用户请求将在nginx中处理两次,但它对用户都是透明的 - 他们只是通过原始URL接收资源,所有重定向都在nginx内部完成。

#2


1  

Define Anonymize for a URL? You can use any of the same methods as URL shortners such as http://bitly.com. But that is not truely anonymous since there is a definite mapping between the shortened URL and the target public url. If you make this per user based there is still a mapping but it is user based.

为URL定义匿名?您可以使用任何与URL缩短程序相同的方法,例如http://bitly.com。但这不是真正的匿名,因为缩短的URL和目标公共URL之间存在明确的映射。如果您基于每个用户进行此操作,则仍然存在映射,但它是基于用户的。

Looks like what you are suggesting is a variation on the above scheme where instead of sending the user to the target URL via a redirect you want the your server to actually fetch the content and return to the user. You need to be aware of the linked content in the public URL such as style sheets and images and adjust them accordingly. Many of the standard proxies has this kind of functionality built in. Also take a look at

看起来您所建议的是上述方案的变体,而不是通过重定向将用户发送到目标URL,您希望服务器实际获取内容并返回给用户。您需要了解公共URL中的链接内容,例如样式表和图像,并相应地进行调整。许多标准代理都内置了这种功能。另外请看一下

https://github.com/jenssegers/php-proxy

http://search.cpan.org/~book/HTTP-Proxy-0.304/lib/HTTP/Proxy.pm.

If you are planning to build your own these can serve as a base.

如果您打算自己建造这些可以作为基础。

#3


1  

I think what you want to do here is somewhat similar to another question I've answered in the past, where for each request by the client, you effectively want to make two requests to two different upstreams under the hood (first one to an upstream capable of decoding the URL, second one to actually fetch said decoded URL), but, of course, only return one result.

我想你想在这里做的有点类似于我过去回答的另一个问题,对于客户的每个请求,你实际上想要向引擎盖下的两个不同的上游发出两个请求(第一个到上游)能够解码URL,第二个能够实际获取所述解码的URL),但是,当然,只返回一个结果。

https://serverfault.com/questions/202011/nginx-and-2-upstreams/485044#485044

As mentioned on serverfault, you could use error_page to process another request, after the first one is complete. You could then use $upstream_http_ to make the subsequent request based on the original one, for example, using $upstream_http_location.

正如在serverfault上提到的,在第一个请求完成后,您可以使用error_page处理另一个请求。然后,您可以使用$ upstream_http_根据原始请求生成后续请求,例如,使用$ upstream_http_location。

You might also want to look into X-Accel-Redirect header, introduced in this context at proxy_ignore_headers.

您可能还想查看在此上下文中在proxy_ignore_headers中引入的X-Accel-Redirect标头。


推荐阅读
  • 本文详细介绍了Java集合框架中的Collection体系,包括集合的基本概念及其与数组的区别。同时,深入探讨了Comparable和Comparator接口的区别,并分析了各种集合类的底层数据结构。最后,提供了如何根据需求选择合适的集合类的指导。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 详细指南:使用IntelliJ IDEA构建多模块Maven项目
    本文在前两篇文章的基础上,进一步指导读者如何在IntelliJ IDEA中创建和配置多模块Maven项目。通过详细的步骤说明,帮助读者掌握项目模块化管理的方法。 ... [详细]
  • 本文探讨了在当前开发环境中使用Django 1.5和Python 3.3的情况下,如何解决AWS和GAE仅支持Python 2.7的问题,并提供了相应的解决方案。 ... [详细]
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • Shell脚本中的条件判断与实践案例
    本文提供了几个实用的Shell脚本案例,包括监控磁盘空间、检测Web服务状态以及使用Curl进行服务可用性测试。每个案例都详细介绍了脚本的编写方法和运行效果。 ... [详细]
  • solrCloud分布式集群安装配置
    solrCloud分布式集群安装配置1.前提安装Zookeeper集群2.安装部署多个solr节点10.41.2.82 ... [详细]
  • 欢迎学习交流!!!持续更新中…文章目录页面生成过程渲染重排与重绘的比较重排(reflow)常见引起重排的属性和方法重排影响的范围尽可能减少 ... [详细]
  • 本文详细介绍如何在Android模拟器上安装TaintDroid的过程,包括解决源代码链接失效及服务器文件变动等问题,旨在帮助后续用户避免不必要的麻烦。 ... [详细]
  • Linux环境下的PHP7安装与配置指南
    本文详细介绍了如何在Linux操作系统中安装和配置PHP7,包括检查当前PHP版本、升级PHP以及配置MySQL支持等步骤,适合后端开发者参考。 ... [详细]
  • 本文介绍了一种有效的方法来监控Web服务器(如Nginx)和数据库服务器(如MySQL)的服务状态,通过端口、进程和服务响应等多种方式确保服务的正常运行。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
author-avatar
郭建将_683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有