通过apache从外部服务器提供内容

时间:2018-02-25 17:56:41

标签: apache .htaccess reverse-proxy

我在abc.com运行我的网络应用程序,使用apache作为网络服务器。

我在SquareSpace上托管了一些静态页面...例如。 abc.squarespace.com/landing

我想配置apache来提供来自abc.squarespace.com的内容,当它收到abc.com/landing

的请求时

我已经在nginx中使用proxy_pass将后端作为abc.squarespace.com用于位置/landing。但我不确定如何在Apache中这样做。也没有运气在网上进行研究。

提前致谢。

2 个答案:

答案 0 :(得分:2)

邮件正文无法包含abc.com的网址,因此我将使用example.comexample.squarespace.com

我相信你正在寻找帧转发。要实现它,请使用以下步骤:

  1. 通过网络服务器配置设置适当的HTTP标头,example.squarespace.com允许从example.com转发帧:
  2. X-Frame-Options: ALLOW-FROM https://example.com/

    有关详细说明,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

    1. 确认example.com已启用Apache mod_proxy_http
    2. # apachectl -M | grep proxy_http proxy_http_module (shared)

      1. 在Apache配置或.htaccess文件中设置以下重写规则以提供来自http://example.squarespace.com/landing的内容
      2. <IfModule proxy_http_module> RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] RewriteRule ^landing(.*) http://example.squarespace.com/landing [P] </IfModule>

        此处的语法与Apache mod_rewrite的语法相同。

答案 1 :(得分:1)

不确定是要求重定向到abc.squarespace.com还是内部代理调用,这里是两者的解决方案

重定向:浏览器会点击abc.com/landing并获得301重定向,将网址更改更改为abc.squarespace.com/landing

将规则添加到httd.conf或包含vhost文件:

RewriteEngine on
RewriteRule   "^/landing/(.+)"  "http://abc.squarespace.com/landing/$1"  [R,L]

代理: abc.com下的abc.squarespace.com&gt;浏览器不会认为该页面是从任何下游域提供的。

选项1:使用带P(代理)开关的重写规则

RewriteEngine on
RewriteRule   "^/landing/(.+)"  "http://abc.squarespace.com/landing/$1"  [P]

选项2:使用proxypass

ProxyPass "/landing" "http://abc.squarespace.com/landing"
ProxyPassReverse "/landing" "http://abc.squarespace.com/landing"

此外,如果需要,可以指定超时,如果需要通过任何Internet代理进行路由,也可以配置ProxyRemote

良好参考资料