Apache httpd与Tomcat整合(window版)

时间:2022-04-25 16:56:16

概述:Apache httpd 和tomcat各有千秋,httpd 主要处理html等等静态网页,而tomcat可以处理jsp,servlet等等动态脚本。现在如何整合它们

1、先决条件

JDK安装(笔者为JDK1.8),没有java环境自行百度

安装好tomcat(笔者为tomcat 7.0) 这个百度一下很多的

安装好Apache httpd(httpd2.4版本)  参考:安装Apache httpd

2、Apache httpd作为代理服务转发到tomcat上

步骤一:配置Apache http的配置文件 在${Apache_httpd_HOME}/conf 下一个配置文件httpd.conf

搜索到proxy

Apache httpd与Tomcat整合(window版)

然后在该文件末尾添加如下内容

ProxyPass /loch-ness http://localhost:8080
ProxyPassReverse /loch-ness http://localhost:8080
ProxyVia On

如图所示  表示输入 localhost/loch-ness  自动访问 http://localhost:8080, 这里可以配置更多代理映射

Apache httpd与Tomcat整合(window版)

Tomcat 基本不需要配置server.xml,默认即可

Apache httpd与Tomcat整合(window版)


步骤二、启动tomcat 和启动Apache httpd服务

tomcat :   参考:启动tomcat

Apache httpd: 参考:启动httpd

步骤三、验证结果

Apache httpd与Tomcat整合(window版)

上面原因是因为tomcat.css采用的是相对路径,所以在localhost/tomcat.css是没有的,但是也可采用代理形式, 在httpd.conf后面追加如下内容,就好了

ProxyPass /tomcat.png http://localhost:8080/tomcat.png
ProxyPassReverse /tomcat.png http://localhost:8080/tomcat.png
ProxyPass /tomcat.css http://localhost:8080/tomcat.css
ProxyPassReverse /tomcat.css http://localhost:8080/tomcat.css


2017年11月30日14:19:59

去掉

ProxyPass /tomcat.png http://localhost:8080/tomcat.png
ProxyPassReverse /tomcat.png http://localhost:8080/tomcat.png
ProxyPass /tomcat.css http://localhost:8080/tomcat.css
ProxyPassReverse /tomcat.css http://localhost:8080/tomcat.css

方法一:只要输入网址多加"/"   例如:http://localhost/loch-ness/   (其实css文件在http://localhost/loch-ness/tomcat.css, 不加的会在http://localhost/tomcat.css 找,肯定找不到的。)

方法二:利用重定向,(外观就是地址栏改变了)

ProxyHTMLURLMap http://localhost:8080  /loch-ness
RewriteEngine On
RewriteRule ^/loch-ness$ http://localhost:8080 [R,L]

<Location /loch-ness/>
ProxyPassReverse /
SetOutputFilter proxy-html
ProxyHTMLURLMap / /loch-ness/
RequestHeader unset Accept-Encoding
</Location>

对于html网页其实可以用mod_proxy_html 模块 注意这个模块依赖于 mod_xml2enc模块,同时打开headers_module模块 、rewrite_module模块(这个解决样式相对路径问题)所以解决办法就是配置httpd.conf取消这个模块的注释(去掉前面的#号)

ProxyHTMLURLMap http://localhost:8080  /loch-ness
RewriteEngine On
RewriteRule ^/loch-ness$ http://localhost:8080 [R,L]

<Location /loch-ness/>
ProxyPassReverse /
SetOutputFilter proxy-html
ProxyHTMLURLMap / /loch-ness/
RequestHeader unset Accept-Encoding
</Location>



LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so

Apache httpd与Tomcat整合(window版)

Apache httpd与Tomcat整合(window版)