背景:前端
個人服務器安裝的系統是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 "%r" %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>