#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
原理: 服務器
客戶瀏覽器使用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協議。(關鍵)
Apache版本
# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 13 2013 17:29:28
ll /etc/httpd/modules/
查看目錄中是否有mod_ssl模塊,若沒有使用yum install mod_ssl安裝,安裝之後變化:
l 增長了/etc/httpd/modules/mod_ssl.so文件
l 增長了/etc/httpd/conf.d/ssl.conf配置文件
咱們須要使用Apache的ProxyPass來轉發URL後端,須要下面兩個模塊
mod_proxy.so
mod_proxy_http.so
咱們還須要實現客戶端瀏覽器訪問http自動轉成https協議,須要下面的模塊
mod_rewrite.so
使用yum 安裝openssl
# yum install openssl
openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
注意:咱們測試環境,不須要建立CA證書,生產環境中須要上傳CA證書,並在ssl.conf文件中指定證書路徑。
# 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默認頁面,以下圖:
Tomcat服務器搭建成功
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頁面。
Tomcat提供的192.168.1.10:8080/examples頁面
實現原理:客戶瀏覽器訪問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/ ,訪問的結果以下圖:
寫成ProxyPassReverse /docs http://192.168.1.10:8080/docs,訪問的結果以下圖:
上面,咱們已經完成了在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