Apache通过反向代理Tomcat实现同时运行JavaWeb和PHP

这篇文章上一个博客里我曾经写过,由于被墙了,所以重新写一遍吧。

上一个VPS,采用的是 CentOS 6 的操作系统,因此,只写CentOS的方法。至于百度搜到遍地的方法,我相信知道些代码的人都知道国内那种搜索引擎搜索来搜索去都是Copy的结果,实际上是没有人真正自己试验过的。于是就变成了,很简单的事,被他们Copy而不加证实的代码越弄越糟,真的是不想吐槽了。
闲话不多说,开始正文

事前准备

要做这件事,首先要安装

1 Apache

2 Tomcat

3 JavaJDK ( Tomcat服务要用到 )

先来简单的介绍一下,
Apache —— Apache软件基金会开发的一款开源网页服务器,具体可以google,baidu或者wiki
Tomcat —— 全称应该叫做 Apache Tomcat 也是Apache软件基金会开发的一款开源网页服务器,主要用于运行Jsp

PHP站在Apache配置好

Java Web 站在Tomcat配置好

配置反向代理

打开你的Apache配置文件(Linux上的Apache叫做httpd) 就是名字叫做 httpd.conf 的文件

找到

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
LoadModule proxy_http_module modules/mod_proxy.so

这么一段 把前面的#号都去掉,事实上并不需要所有的,下面来详细解释一下这一块

提供基于文本文件的认证

LoadModule authn_file_module modules/mod_authn_file.so

提供基于DBM文件的认证

LoadModule authn_dbm_module modules/mod_authn_dbm.so

提供匿名用户认证

LoadModule authn_anon_module modules/mod_authn_anon.so

提供基于SQL数据库的认证

LoadModule authn_dbd_module modules/mod_authn_dbd.so

未正确配置认证模块的情况下简单拒绝一切认证信息

LoadModule authn_default_module modules/mod_authn_default.so

提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要

LoadModule authz_host_module modules/mod_authz_host.so

使用纯文本文件为组提供授权支持

LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

提供基于每个用户的授权支持

LoadModule authz_user_module modules/mod_authz_user.so

使用DBM文件为组提供授权支持

#LoadModule authz_dbm_module modules/mod_authz_dbm.so

基于文件的所有者进行授权

LoadModule authz_owner_module modules/mod_authz_owner.so

在未正确配置授权支持模块的情况下简单拒绝一切授权请求

LoadModule authz_default_module modules/mod_authz_default.so

提供基本的HTTP认证,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

LoadModule auth_basic_module modules/mod_auth_basic.so

提供HTTP MD5摘要认证,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

LoadModule auth_digest_module modules/mod_auth_digest.so

提供文件描述符缓存支持,从而提高Apache性能

LoadModule file_cache_module modules/mod_file_cache.so

提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用

LoadModule cache_module modules/mod_cache.so

mod_cache提供基于磁盘的缓存管理

LoadModule disk_cache_module modules/mod_disk_cache.so

mod_cache提供基于内存的缓存管理

LoadModule mem_cache_module modules/mod_mem_cache.so

管理SQL数据库连接,为需要数据库功能的模块提供支持

LoadModule dbd_module modules/mod_dbd.so

将所有I/O操作转储到错误日志中

LoadModule dumpio_module modules/mod_dumpio.so

使用外部程序作为过滤器

LoadModule ext_filter_module modules/mod_ext_filter.so

实现服务端包含文档(SSI)处理

LoadModule include_module modules/mod_include.so

根据上下文实际情况对输出过滤器进行动态配置

LoadModule filter_module modules/mod_filter.so

服务器在将输出内容发送到客户端以前进行压缩以节约带宽

LoadModule deflate_module modules/mod_deflate.so

记录日志和定制日志文件格式

LoadModule log_config_module modules/mod_log_config.so

对每个请求的输入/输出字节数以及HTTP头进行日志记录

LoadModule logio_module modules/mod_logio.so

允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量

LoadModule env_module modules/mod_env.so

允许通过配置文件控制HTTP的”Expires:”和”Cache-Control:”头内容

LoadModule expires_module modules/mod_expires.so

允许通过配置文件控制任意的HTTP请求和应答头信息

LoadModule headers_module modules/mod_headers.so

实现RFC1413规定的ident查找

LoadModule ident_module modules/mod_ident.so

根据客户端请求头字段设置环境变量

LoadModule setenvif_module modules/mod_setenvif.so

mod_proxy的扩展,提供Apache JServ Protocol支持

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

mod_proxy的扩展,提供负载均衡支持

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码)

LoadModule mime_module modules/mod_mime.so

允许Apache提供DAV协议支持

LoadModule dav_module modules/mod_dav.so

生成描述服务器状态的Web页面

LoadModule status_module modules/mod_status.so

自动对目录中的内容生成列表

LoadModule autoindex_module modules/mod_autoindex.so

服务器发送自己包含HTTP头内容的文件

LoadModule asis_module modules/mod_asis.so

生成Apache配置情况的Web页面

LoadModule info_module modules/mod_info.so

在非线程型MPM(prefork)上提供对CGI脚本执行的支持

LoadModule cgi_module modules/mod_cgi.so

在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本

LoadModule cgid_module modules/mod_cgid.so

为mod_dav访问服务器上的文件系统提供支持

LoadModule dav_fs_module modules/mod_dav_fs.so

提供大批量虚拟主机的动态配置支持

LoadModule vhost_alias_module modules/mod_vhost_alias.so

提供内容协商支持

LoadModule negotiation_module modules/mod_negotiation.so

指定目录索引文件以及为目录提供重定向

LoadModule dir_module modules/mod_dir.so

处理服务器端图像映射

LoadModule imagemap_module modules/mod_imagemap.so

针对特定的媒体类型或请求方法执行CGI脚本

LoadModule actions_module modules/mod_actions.so

服务器自动纠正URL中的拼写错误

LoadModule speling_module modules/mod_speling.so

允许在URL中通过”/~username”形式从用户自己的主目录中提供页面

LoadModule userdir_module modules/mod_userdir.so

提供从文件系统的不同部分到文档树的映射和URL重定向

LoadModule alias_module modules/mod_alias.so

基于一定规则实时重写URL请求

LoadModule rewrite_module modules/mod_rewrite.so

根据需求选择需要加载的项目,后把文件拉到底

#NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier 
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost www.codecrh.com:80>
#    ServerAdmin [email protected]
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

看到这段先把PHP站按照格式配置好

在下面再加上

<VirtualHost *:80>
   ServerName 你的Java Web站域名
   ServerAlias 你的Java Web站别名

  ProxyPass / 你要反向代理的地址
  ProxyPassReverse / 你要反向代理的地址
</VirtualHost>

就搞定了

如果喜欢这篇文章,可以在注明转发自www.codecrh.com的情况下转发这篇文章。