我希望当我点击 URL A 时,它应该提供来自 URL B 的内容,但地址栏上的 URL 应该只指向 URL A。
URL A: http://apps.company.com/lab
URL B: http://svrdev-73:6020
为了尝试这一点,hosts
我在文件中进行了如下配置:
172.16.0.73 apps.company.com
我正在使用 Windows Server 2016。应用程序 B 和 Apache ( ver. 2.4
) 都在同一 Windows 服务器上运行。我发现了这一点ProxyPass
,ProxyPassReverse
可能会有所帮助。
在文件末尾添加以下几行httpd.conf
:
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy http://svrdev-73:6020/*>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /lab http://svrdev-73:6020 nocanon
ProxyPassReverse /lab http://svrdev-73:6020
配置(错误)后,当我尝试访问 URL A 时,虽然它会将我带到直接访问 URL B 时出现的登录页面,但当我登录时,它不会显示任何内容。在浏览器的控制台部分,我看到以下内容:
Failed to load resource: the server responded with a status of 404 (Not Found) main.00e8fde0.css:1
Failed to load resource: the server responded with a status of 404 (Not Found) main.aa149470.js:1
当我检查 Apache 日志时,我看到了以下内容:
[Sun Sep 23 12:35:54.949711 2018] [core:info] [pid 20708:tid 1072] [client 172.16.0.73:60914] AH00128: File does not exist: C:/apache24/htdocs/static/css/main.00e8fde0.css, referer: http://apps.company.com/lab
[Sun Sep 23 12:35:54.949711 2018] [authz_core:debug] [pid 20708:tid 1076] mod_authz_core.c(817): [client 172.16.0.73:60913] AH01626: authorization result of <RequireAny>: granted, referer: http://apps.company.com/lab
从上面我看到它正在默认DocumentRoot
目录中寻找文件(即"${SRVROOT}/htdocs"
),但是,我的应用程序代码(URL B)位于 Tomcatc:\app-tomcat\webapps\ROOT\
目录中。我还尝试将 DocumentRoot 目录路径更改c:/app-tomcat/webapps/ROOT
为索引.html居住在一起静止的dir 和其他文件,但我仍然收到相同的错误。我还将此属性更改<Directory "${SRVROOT}/htdocs">
为,<Directory "c:/app-tomcat/webapps/ROOT">
但错误仍然存在。httpd.conf
除了更改日志级别和启用mod_proxy
和mod_proxy_http
模块外,没有对 或 Apache 中的任何其他文件进行任何其他修改。
知道如何解决这个问题吗?
答案1
看来你只重定向/lab
,但静态文件不在/lab
,它们在/static
。
因此您也应该重定向,/static
以便可以访问这些文件。
另一种方法是将静态文件放入适当的 Apache 目录中。
编辑
关于文件未找到的错误消息说
C:/apache24/htdocs/static/css/main.00e8fde0.css
假设DocumentRoot
是C:/apache24/htdocs
,则意味着访问该文件的 URL 是/static/css/main.00e8fde0.css
。