linux 下apache反向代理tomcat,及解决内网IP问题

简介:

一、实验说明

Apache HTTP server  Tomcat server 整合,一般是希望对于用户只公布 Apache HTTP server 的网址,而 Tomcat 的网址则不公布,扮演一个幕后英雄的角色。访问 Tomcat  HTTP 请求,通过 Apache 转发给 TomcatTomcat 处理完后,将 HTTP 回应返回给 Apache,然后 Apache  HTTP回应发回给用户端浏览器。

Apache HTTP server Tomcat server 直接的 HTTP 数据传输,有很多种方法。

方法一,使用 mod_jk。很多网站上介绍到 Apache HTTP server  Tomcat server 整合的时候,都是在介绍  mod_jk.so 的使用,这是一种比较老的方法,并且需要额外下载 mod_jkApache  Tomcat 的默认配置文件都需要改动。

方法二 URL rewrite,也就是对于指定格式的 URL,转发给某个 Tomcat 的网址。这里所说的指定格式,是指 Apache 所使用的正则表达式,通俗地将,是一种类似 * 的一种比较高级通配符。这种方法不需要下在额外的文件,只需要配置 Apache

方法三mod_proxy_ajp,仅在 Apache 2.1 及以后的版本中可用,Apache 自带的一个新功能模块。这时 Apache 使用 Apache JServ Protocol  Tomcat 通讯。不需要下在额外的文件,需要改动Apache  Tomcat 的默认配置文件都需要改动。

方法四mod_proxy。其实 mod_proxy 既可以做类似于 Wingate 一样的公司局域网共享上网代理,也可以做反向代理(Reverse proxy)。这里使用的是反向代理功能,用户端浏览器不需要把代理服务器改成这里的 Apache 地址。mod_proxy  Apache 自带功能,并且配置比较简单。

 

二、实验环境

下面我选择方法四,配置简易不复杂:

我是用两台服务器做的环境如下:

Red hat 6.2 64 IP地址192.168.2.10和192.168.2.12

Apache部署在10那台服务器上,tomcat分别部署在两个服务器上

 

三、实验步骤

yum install –y gcc httpd

 

[端口转发配置]

通过http_proxytomcat的端口转发:

描述:将远程服务器映射到本地服务器的URL空间

语法:ProxyPass [路径] !|url [=值键= ...]] [nocanon]

上下文:server config, virtual host, directory

状态:扩展

模块:mod_proxy

配置httpd.conf

#保证以下模块加载

LoadModuleproxy_module modules/mod_proxy.so

LoadModuleproxy_http_module modules/mod_proxy_http.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

 

#配置ProxyPass

1
2
3
4
5
6
7
8
9
10
11
12
  vi  /etc/httpd/conf/httpd .conf 
<VirtualHost *:80>
     ServerAdmin webmaster@jsoft.cn
     ServerName 192.168.2.10
     ProxyPreserveHost On  
     ProxyPass  /one  http: //192 .168.2.10:8080 /one
     ProxyPassReverse  /one  http: //192 .168.2.10:8080 /one
     
     ProxyPreserveHost On
     ProxyPass  /two  http: //192 .168.2.12:8082 /two
     ProxyPassReverse  /two  http: //192 .168.2.12:8082 /two
< /VirtualHost >


service httpd resload


四、反向代理 出现内网IP问题


解决方法,在配置反向代理的时候加上一行:

ProxyPreserveHost On 


例如:

ProxyPreserveHost On    #在这里加即可

ProxyPass /one http://192.168.2.10:8080/one
ProxyPassReverse /one http://192.168.2.10:8080/one

 



      本文转自ling118 51CTO博客,原文链接:http://blog.51cto.com/meiling/1559458,如需转载请自行联系原作者





相关文章
|
2月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
2月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
2月前
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
2月前
|
网络协议 Linux
在Linux中,如何改IP、主机名、DNS?
在Linux中,如何改IP、主机名、DNS?
|
2月前
|
Linux Apache
在Linux中,apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
在Linux中,apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
|
2月前
|
网络协议 Ubuntu Linux
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
|
2月前
|
监控 网络协议 Linux
在Linux中,如何查看当前系统每个 IP 的连接数?
在Linux中,如何查看当前系统每个 IP 的连接数?
|
2月前
|
域名解析 缓存 负载均衡
在Linux中,自定义解析域名的时候,可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个域名对应多个ip?
在Linux中,自定义解析域名的时候,可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个域名对应多个ip?
|
2月前
|
网络协议 Linux
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
|
2月前
|
Ubuntu Linux 网络安全
在Linux中,能否给⼀个网卡配置多个IP? 如果能,怎么配置?
在Linux中,能否给⼀个网卡配置多个IP? 如果能,怎么配置?