【问题标题】:Unable to redirect to other url in apache无法重定向到 apache 中的其他 url
【发布时间】:2018-04-24 06:24:44
【问题描述】:

我有两台 Redhat Linux 服务器,分别是“原始”和“演示”。两者都运行着 apache。在原始服务器上,我在一个页面上有一个链接“http://original.com/abc”,我想将它重定向到http://demo.com

我所做的是-

在原服务器上打开 httpd.conf 并添加以下行并重新启动 apache 服务:

ProxyPass         /abc  http://demo.com/
ProxyPassReverse  /abc  http://demo.com/

但是当我尝试访问http://original.com/abc 时,它会将我重定向到原始服务器,即http://original.com(而不是http://demo.com

我尝试在各种网站上找到解决方案,但无法找出问题所在。

编辑: curl -v http://original.com/abc的输出:

curl -v http://original.com/abc
* About to connect() to original.com port 80 (#0)
*   Trying 10.100.100.100...
* Connected to original.com (10.100.100.100) port 80 (#0)
> GET /demo HTTP/1.1
> User-Agent: curl/7.29.0
> Host: original.com
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Tue, 24 Apr 2018 06:30:23 GMT
< Server: Apache-Coyote/1.1
< X-Frame-Options: SAMEORIGIN
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Location: login.action
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Set-Cookie: JSESSIONID=0BAA246C7F2505D2F5A0335CB0542CAA; Path=/; HttpOnly
<
* Connection #0 to host original.com left intact

curl -v http://demo.com/ 的输出:

#curl -v http://demo.com
* About to connect() to 10.100.100.101 port 80 (#0)
*   Trying 10.100.100.101...
* Connected to 10.100.100.101 (10.100.100.101) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: demo.com
> Accept: */*
>
< HTTP/1.1 302 Found
< Server: Apache-Coyote/1.1
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Set-Cookie: JSESSIONID=FED19458459131F456D638EC57278C2A; Path=/; HttpOnly
< Location: login.action
< Content-Type: text/html
< Content-Length: 0
< Date: Tue, 24 Apr 2018 06:31:47 GMT
<
* Connection #0 to host demo.com left intact

【问题讨论】:

    标签: linux apache proxy


    【解决方案1】:

    ProxyPass 语句的文本顺序是相关的。第一个匹配的条目停止进一步匹配。

    ProxyPass         /     http://some.tomcat:8080/
    ProxyPassReverse  /     http://some.tomcat:8080/
    ...
    ProxyPass         /abc  http://demo.com/
    ProxyPassReverse  /abc  http://demo.com/
    

    在这里,demo.com 将一无所获。 some.tomcat 将同时被 //abc 喂食

    【讨论】:

    • 一件有趣的事情是,我在 some.tomcat:8080 行上方编写了 ProxyPass 语句,然后我将重定向到我之前所说的同一台服务器。但是,当我在 some.tomcat:8080 行下方放置演示的 ProxyPass 语句时,我收到 403 错误(对请求的资源的 HTTP 访问已被拒绝)错误消息。
    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 2021-04-09
    • 2016-08-11
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多