【问题标题】:proxy server configuration [closed]代理服务器配置[关闭]
【发布时间】:2012-04-20 10:56:57
【问题描述】:

我被指派实现(或更好地配置)一种 http 代理服务器。服务器应支持如下所述的进程:

-用户在其浏览器中打开一个具有以下结构的 URL:http://:/resource_name

-代理服务器验证传入 http-request 的 URL 中的资源名称,并确定它应该将来自客户端的原始请求转发到的 Web 资源的 URL

-代理服务器转发原始请求,等待它从外部网络服务器获得答案,然后将其发送回用户

我在 java 中工作,但我不想自己玩套接字来实现代理服务器。相反,我想使用 apache http 服务器。有谁知道是否可以使用 apache http 服务器在配置级别完成这样的任务?如果有,怎么做?

提前感谢您的回答!

【问题讨论】:

  • 您要对 URL 进行什么验证?您可以将其放入 apache 配置中吗(例如,哪些 URL 是有效的)?此外,如果 apache 将您的错误请求转发到应用服务器,它将得到类似 404 或 500 的信息,并且可以将其返回给用户 - 这是否满足您的要求,或者您是否需要在之前捕获不正确的 URL它到达应用服务器?
  • 验证可能不是正确的术语。我想在这里做的是向我的代理服务器后面的用户隐藏外部网络资源。用户应该能够通过以下方式从我的代理请求资源:my-proxy/resource_name,我的代理应该将此 url 映射到类似real-resource-provider/resource_name 的 url,向网络上的真实提供者发出请求并返回来自真正的提供者给用户。如果真正的资源提供者返回 404 之类的 http 错误代码,则代理应将其重新翻译给用户。

标签: java apache proxy httpserver


【解决方案1】:

您可以在 Apache 中使用模块 mod_proxy(代理您的请求转发)和 mod_rewrite(将您的外部 URL 映射到应用程序服务器上的 URL)来执行此操作

http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

【讨论】:

    【解决方案2】:

    Apache 不是用 java 编写的。使用TomcatJetty,您的机会很大。

    您需要实现一个带有 Servlet 的 Web 应用程序来拦截所有请求,然后在 Servlet 中处理您的所有自定义逻辑。

    【讨论】:

    • "Apache 不是用 java 编写的" 嗯,这不是问题。服务器使用的技术没有限制。 “您将需要使用 Servlet 拦截所有请求的 webapp,然后在 Servlet 中处理您的所有自定义逻辑。”那么,你认为像apache这样的http服务器的配置层面的问题是不可能解决的吗?
    • 绝对不是不可能的,不知道他想在里面做什么有趣的事情。我希望即使是 Squid,您也能做到所有这些。
    猜你喜欢
    • 2011-01-01
    • 2011-02-05
    • 2013-05-03
    • 1970-01-01
    • 2012-09-13
    • 2017-02-05
    • 1970-01-01
    • 2015-06-27
    相关资源
    最近更新 更多