我有一个关于proxypass和proxypass反向的问题。
我希望能够在我的应用程序(内部)上达到以下目标
https://examplehost/appname/Servletname?method-to-call
但我希望外部进入网站的人看到以下内容:
https://examplehost/Servletname?method-to-call
我的apache2 .conf文件中有以下内容
Proxypass
/ http://examplehost/appname/ProxypassReverse/ http://examplehost/
但是,当我在外部调用我自己的网站时,我会收到以下错误消息:
请求URL不匹配收件人URL,"/appname/Servletname?“不匹配"/Servletname?
这表明外部链接不仅存在匹配问题,而且首先也会看到错误的链接,因为外部源不应该看到"appname“。
我还尝试在.conf文件中执行以下操作
Proxypass
/ http://examplehost/appname/ProxypassReverse/ http://examplehost/appname/
有人知道如何隐藏应用程序名称而不删除对app应用程序的访问吗?
感谢任何有用的答案或链接。
发布于 2016-11-28 09:19:09
一个简单的内部RewriteRule应该允许重写,这是一种透明的方式。不需要代理策略及其额外的请求往返:
RewriteEngine on
RewriteRule ^/?Servletname$ /appname/Servletname [L,QSA,NC]我不太明白你引用的错误信息,但我没有多少信息。问题是哪个组件提供了错误信息..。服务器端?客户端?servlet侧?
当您需要使用代理模块时(为什么.)然后看看apache的重写模块提供的P标志。或者,使用ProxyPass指令当然也是可能的,我只是不认为有任何原因。尽管如此,我还是建议如下:
ProxyPass /Servletname https://examplehost/appname/Servletname
ProxyPassReverse /Servletname https://examplehost/appname/Servletname还有一个一般性提示:您应该总是倾向于将这样的规则放在http服务器主机配置中,而不是使用.htaccess样式的文件。众所周知,这些文件容易出错,很难调试,而且它们确实减慢了服务器的速度。当您无法控制主机配置(请阅读:真正便宜的托管服务提供者)或您的应用程序依赖于编写自己的重写规则(这显然是一场安全噩梦)时,才会提供它们。
https://stackoverflow.com/questions/40840589
复制相似问题