Apache轉發到Tomcat

#vi /etc/httpd/conf/httpd.confphp

添加下面配置html

NameVirtualHost *:80apache

<VirtualHost *:80>
ProxyPreserveHost On
ServerName www.域名.com
ProxyPass / http://www.域名.com:8080/system/
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>後端

 

 

 

做者:沈小然瀏覽器

編寫日期:2014年7月6日tomcat

1          實現原理與工做流程

原理: 服務器

客戶瀏覽器使用https協議訪問 ApacheServer 。ApacheServer將請求轉發到後端的Tomcat。ApacheServer與後端的Tomcat通訊使用http協議。因此Tomcat不用開啓https協議。把ApacheServer配置支持https協議就能夠了。證書也在ApacheServer中配置。自始自終Tomcat都不須要修改任何地方。同理換成JBoss也同樣,JBoss不須要修改。 測試

更進一步,讓客戶瀏覽器訪問http協議時,自動將http協議轉成https協議就更加人性化了。這個技術也是在ApacheServer中配置完成。 ui

工做流程: 加密

1.       搭建ApacheServer服務器,支持https協議;(基礎工做)

2.       搭建Tomcat服務器,配置基本的訪問頁面;(基礎工做,整個功能不須要配置Tomcat

3.       配置ApacheServer服務器,實如今https協議基礎上將URL請求轉發給Tomcat服務器;(關鍵)

4.       配置ApacheServer,實現訪問http協議自動轉成https協議。(關鍵)

2          搭建ApacheServer服務器

2.1       使用yum 安裝apache

Apache版本

# httpd -v

Server version: Apache/2.2.15 (Unix)

Server built:   Aug 13 2013 17:29:28

 

2.2       檢測Apache是否支持加密https協議

ll /etc/httpd/modules/

查看目錄中是否有mod_ssl模塊,若沒有使用yum install mod_ssl安裝,安裝之後變化:

增長了/etc/httpd/modules/mod_ssl.so文件

增長了/etc/httpd/conf.d/ssl.conf配置文件

2.3       實現URl轉發技術須要的模塊

咱們須要使用Apache的ProxyPass來轉發URL後端,須要下面兩個模塊

mod_proxy.so

mod_proxy_http.so

咱們還須要實現客戶端瀏覽器訪問http自動轉成https協議,須要下面的模塊

mod_rewrite.so

 

2.4       安裝openssl提供ssl加密協議

使用yum 安裝openssl

# yum install openssl

openssl version

OpenSSL 1.0.1e-fips 11 Feb 2013

注意:咱們測試環境,不須要建立CA證書,生產環境中須要上傳CA證書,並在ssl.conf文件中指定證書路徑。

3          搭建Tomcat服務器

# tar zxf apache-tomcat-8.0.9.tar.gz

# mv apache-tomcat-8.0.9 /opt/tomcat

開啓tomcat服務,測試使用tomcat默認頁面就能夠

# bin/startup.sh

訪問192.168.1.10:8080出現tomcat默認頁面,以下圖:

Apache 實現ProxyPass轉發URL到Tomcat並實現http自動轉https

 

Tomcat服務器搭建成功

1          配置Apache在http協議基礎上使用ProxyPass轉發URL到Tomcat(主要測試基本的ProxyPass的轉發功能)

1)編輯/etc/httpd/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

#具有以上2行是說明apache具有將URL轉發給Tomcat的能力

# 測試頁面add by sxr

ProxyPass /examples http://192.168.1.10:8080/examples/

ProxyPassReverse /examples http://192.168.1.10:8080/examples/

測試,訪問192.168.1.10/examples後,自動跳轉到了後端Tomcat的192.168.1.10:8080/examples頁面。

Apache 實現ProxyPass轉發URL到Tomcat並實現http自動轉https

Tomcat提供的192.168.1.10:8080/examples頁面

Apache 實現ProxyPass轉發URL到Tomcat並實現http自動轉https

1          配置Apache在https協議中實現ProxyPass轉發URL到Tomcat

實現原理:客戶瀏覽器訪問Apache的htts協議,在Aapache的ssl.conf配置文件中配置ProxyPass轉發,將請求轉發給後端的Tomcat服務器,這樣就實現了在https協議的基礎上Apache將URL轉發給Tomcat

注意:此時,客戶端瀏覽器必須使用https://192.168.1.10/docs訪問才能實現URL轉發。

1)編輯/etc/httpd/conf/httpd.conf

Include conf.d/*.conf

#加載其餘的配置文件,主要是爲了使用ssl.conf

保存。

2)編輯 /etc/httpd/conf.d/ssl.conf,支持https協議

LoadModule ssl_module modules/mod_ssl.so

Listen 443

##

## SSL Virtual Host Context

##

<VirtualHost _default_:443>

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<Files ~ "\.(cgi|shtml|phtml|php3?)$">

    SSLOptions +StdEnvVars

</Files>

<Directory "/var/www/cgi-bin">

    SSLOptions +StdEnvVars

</Directory>

SetEnvIf User-Agent ".*MSIE.*" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

# https協議中實現ProxyPass轉發URL,實際就是在ssl.conf中添加ProxyPass語句

ProxyPass /test http://192.168.1.10:8080/examples

ProxyPassReverse /test http://192.168.1.10:8080/examples

ProxyPass /docs http://192.168.1.10:8080/docs    注意,末尾沒有/符號,http://192.168.1.10:8080/docs/是錯誤的

ProxyPassReverse /docs http://192.168.1.10:8080/docs

注意:轉發到Tomcat的URL中末尾不能加/符號。若是寫成ProxyPassReverse /docs http://192.168.1.10:8080/docs/ ,訪問的結果以下圖:

Apache 實現ProxyPass轉發URL到Tomcat並實現http自動轉https

寫成ProxyPassReverse /docs http://192.168.1.10:8080/docs,訪問的結果以下圖:

Apache 實現ProxyPass轉發URL到Tomcat並實現http自動轉https

 

2          配置Apache,實現http自動轉換成https協議

上面,咱們已經完成了在https協議上實現將URL轉發給Tomcat。接下來,咱們只要配置Apache,實現http自動轉成https協議,就可以讓客戶端瀏覽器輸入普通地址自動跳轉到加密的https的頁面,而且頁面仍是後端Tomcat服務提供的功能。

編輯/etc/httpd/conf/httpd.conf配置文件,下面語句實現將整個Apache站點都自動轉成https協議

# add by sxr

RewriteEngine on

RewriteCond %{SERVER_PORT} 80

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteLog /var/log/httpd/rewrite.log

RewriteLogLevel 10

保存,重啓Apache服務生效

# /etc/init.d/httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]

來自:http://my.oschina.net/lionel45/blog/287735

相關文章
相關標籤/搜索