Apache 2.2 反向代理 Tomcat (https、ajp)

背景:前端

    個人服務器安裝的系統是CentOS 6.7,httpd是經過yum安裝的,默認的版本是2.2,由於Tomcat處理http鏈接不是很在行,咱們須要在前端添加一個WEB服務器,來反向代理後面的Tomcat,由於Tomcat有AJP協議,而且apache也支持AJP協議,因此咱們就選定了httpd。linux

    訪問的效果是,訪問域名http://www.wzlinux.com 自動重定向到https://www.wzlinux.com 而後再反向代理到後端的Tomcat。web


部署:apache

一、首先配置tomcat虛擬主機,以及確認AJP開啓後端

#開啓AJP協議鏈接器
<Connector port="8009" protocol="AJP/1.3" 
       maxHttpHeaderSize="8192"
       enableLookups="false"
       connectionTimeout="20000"
       URIEncoding="utf-8"
       acceptCount="1000"
       redirectPort="8443" />

#配置虛擬主機
<Host name="www.wzlinux.com"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
   <Context path="" docBase= "/usr/local/tomcat/webapps/wzlinux" 
           reloadable="true" crossContext="true" />
      <Valve className="org.apache.catalina.valves.AccessLogValve" 
              directory="logs"
              prefix="wzlinux_log." suffix=".txt"
              pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

    若是打算使用http協議反向代理,要獲取用戶的真實IP,須要把%h改成%{X-Forwarded-For}i便可。tomcat

二、安裝httpd和ssl模塊bash

yum install httpd mod_ssl -y

三、配置httpd服務器

    安裝mod_ssl以後,會自動生成文件/etc/httpd/conf.d/ssl.conf,裏面主要是SSL的參數設定,這裏咱們能夠不用修改,使用默認便可。app

    爲了實現咱們的要求,咱們建立配置文件/etc/httpd/conf.d/wzlinux.conf,內容以下:負載均衡

NameVirtualHost *:80
NameVirtualHost *:443

#在這段,咱們開啓重定向,使http轉向https
<VirtualHost *:80>   
    ServerName www.wzlinux.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

#真正的反向代理
<VirtualHost *:443>
    ServerName www.wzlinux.com:443
    SSLCertificateFile /etc/httpd/cert/214226183630572.pem
    SSLCertificateKeyFile /etc/httpd/cert/214226183630572.key
    ProxyVia On
    ProxyRequests Off  
    ProxyPreserveHost On                      #把主機名傳給後端主機
    ProxyPass / ajp://127.0.0.1:8009/         #反向代理給後端主機
    ProxyPa***everse / ajp://127.0.0.1:8009/
</VirtualHost>

四、啓動服務

    配置很簡單,啓動服務便可成功,若有問題能夠查看日誌,全部以上的功能都是由httpd的模塊支持的,可使用命令httpd -M查看支持的模塊,確保如下模塊都有便可。

proxy_module 
proxy_balancer_module 
proxy_ajp_module 
ssl_module


附錄:

    若是在上一步的基礎上,咱們須要讓httpd作負載均衡,配置文件只需修改爲以下便可:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
    ServerName www.wzlinux.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName www.wzlinux.com:443
    SSLCertificateFile /etc/httpd/cert/214226183630572.pem
    SSLCertificateKeyFile /etc/httpd/cert/214226183630572.key
    <Proxy balancer://wzlinux>
      BalancerMember ajp://127.0.0.1:8009 loadfactor=1
      BalancerMember ajp://10.0.1.7:8009 loadfactor=2
      ProxySet lbmethod=bytraffic
    </Proxy>
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / balancer://wzlinux/
    ProxyPa***everse / balancer://wzlinux/
</VirtualHost>


                             wKiom1mWfr2ytalNAACmb4CVfN4517.jpg

相關文章
相關標籤/搜索