Apache 反向代理取消转义 URL

Apache 反向代理取消转义 URL

我在 DMZ 中运行 Apache 2.2.15 作为反向代理。我在内部网络上有一个应用程序,我通过反向代理将其发布到 Internet 上供员工使用。

作为此应用程序的一部分,工作人员可以看到带有 PDF 附件的消息。内部工作人员(无需通过反向代理)可以顺利下载这些 PDF。外部工作人员则不能。

这是我在应用程序服务器上的 Apache 日志中看到的内容。

172.20.0.9 - - [04/Dec/2014:08:48:21 +1300] "GET /application/home/getAttachment/MTE7Y3lzdGljIGZpYnJvc2lzLnBkZg%3D%3D HTTP/1.1" 200 88090
10.0.0.2 - - [04/Dec/2014:08:48:27 +1300] "GET /application/home/getAttachment/MTE7Y3lzdGljIGZpYnJvc2lzLnBkZg== HTTP/1.0" 400 -

第一个请求来自成功下载 PDF 文件的内部用户。第二个请求来自 DMZ 中的反向代理。请注意它如何将 URL 末尾的“%3D%3D”转义为“==”。

我在反向代理中做了几件事。首先,如果有人尝试进入根目录,重写规则会将其发送到应用程序目录。

  <IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^/$ /application/ [NE,R]
  </IfModule>

配置的另一个相关部分是反向代理部分。

  <IfModule mod_proxy.c>
   RequestHeader set Front-End-Https "On"
   SSLProxyEngine on
   SetEnv           force-proxy-request-1.0 1
   SetEnv           proxy-nokeepalive       1
   SetEnv proxy-initial-not-pooled 1

   # Reverse Proxy
   ProxyPass /application https://server.internal.lan/application
   ProxyPassReverse /application https://server.internal.lan/application
  </IfModule>

有人能告诉我如何停止取消转义这些 URL 吗?

谢谢

大卫

答案1

重写规则中的 [NE] 标志将其设置为“无转义”。请尝试将其更改为 [B] 以转义反向引用。

相关内容