我对 Apache 服务器 (2.0,我知道它有点太旧了,但是我的工作场所要求我学习它,因为它是我们正在使用的版本) 还很陌生,现在试图让 Apache 与 Jboss 一起工作 (Jboss 作为应用程序服务器,Apache 位于 JBoss 前面并提供所有静态内容)。
我在 mod_jk 的帮助下使 Apache 与 Jboss 协同工作;然而,当我尝试添加虚拟主机配置以使 Apache 从特定文件夹提供图像而不是推动 JBoss 提供静态内容时,我收到了 403 Forbidden 错误。
我浏览了多个论坛和其他网站,试图寻找该问题的答案或解决方案,但遗憾的是,似乎没有任何方法对我有用!:(
请问有人能帮我解决这个问题吗?稍微解释一下将是一个令人欣慰的补充。
以下是我在httpd.conf文件中的虚拟主机定义。
<VirtualHost *:80>
ServerAdmin admin@localhost
ServerName localhost
DocumentRoot "D:/Dev-Ops/apache/Apache2/htdocs/jboss/"
<Directory "D:/Dev-Ops/apache/Apache2/htdocs/jboss/">
AllowOverride All
Order Allow,Deny
Allow from all
Require all granted
</Directory>
#rewrite incoming requests
RewriteEngine On
RewriteCond /SchoolApp%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ http://localhost:8080/SchoolApp/$1 [proxy,last]
</VirtualHost>
非常感谢您的帮助。
PS:我正在关注这个关联在尝试了其他几种类似的指令后。
答案1
最后我自己搞明白了。Mod-Jk 有 JkMount 和 JkUnMount 指令来完成内容的重定向。
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:\Dev-Ops\apache\Apache2\htdocs"
ServerName localhost.com
JkMount /SchoolApp/* loadbalancer
JkMount /SchoolApp loadbalancer
JkUnMount /SchoolApp/*jpg loadbalancer
JkUnMount /SchoolApp/*.html loadbalancer
</VirtualHost>
JkMount /SchoolApp/*
将所有请求从 Apache 重定向到 jboss web 应用程序 SchoolApp (此处:http://localhost.com:8080/SchoolApp/);因为我已经使用
JkUnMount /SchoolApp/*jpg loadbalancer
它不会重定向任何请求图片文件到 jboss,相反,它会在下面寻找SchoolApp/
文件夹"D:\Dev-Ops\apache\Apache2\htdocs"
并从那里提供图像,我在那里有一个适当的目录结构,模仿我从 Jboss web 应用程序请求的 jpg 文件的目录结构。
例如如果我请求http://localhost.com/SchoolApp/,mod-jk 将请求重定向到http://localhost.com:8080/SchoolApp/然而,如果我要求http://localhost.com/SchoolApp/welcome.jpg,此请求将不会被重定向到http://localhost.com:8080/SchoolApp/welcome.jpg即使在 jboss 应用程序下有这样的文件,它也会在 apache 中的 htdocs/SchoolApp/ 文件夹下寻找 welcome.jpg,如果 welcome.jpg 存在,它就会从那里提供该文件。
我希望这能解释这一点。