我在我的DMZ中运行Apache 2.2.15作为反向代理。 我在互联网上提供了一个内部networking上的应用程序供员工通过反向代理使用。
作为这个应用程序的一部分,员工可以看到带有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>
configuration的其他相关部分是反向代理部分。
<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?
谢谢
大卫
您的重写规则中的[NE]标志将其设置为“无Escape”。 尝试将其更改为[B]以避免返回引用。