title: apache安裝與反向代理配置
date: 2017-11-04 21:13:48
tags:
apache安裝文件
apache服務(wù)器安裝包:httpd-2.4.28.tar.gz
apr包: apr-util-1.6.1.tar.gz、apr-1.6.3.tar.gz
prce包:pcre-8.38.tar.gz
c++編譯工具包:gcc-c++-4.8.2-16.el7.x86_64.rpm
-
openssl安裝包:openssl-1.0.2l.tar.gz
apache服務(wù)器安裝依賴的包比較多,由于安裝環(huán)境的查詢景用,在安裝的過程中可能會(huì)遇到各種問題娩缰,一定要詳細(xì)閱讀安裝日志,本安裝環(huán)境是在centos7的虛擬機(jī)
openssl的安裝
- 解壓tar -zxvf openssl-1.0.2l.tar.gz
- 解壓tar -zxvf openssl-1.0.2l.tar.gz
- 進(jìn)入到目錄cd openssl-1.0.2l
- 執(zhí)行配置文件 $ ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
- 編譯make
- 安裝make install
- 驗(yàn)證 openssl version 顯示版本信息
安裝apache服務(wù)器
安裝apache服務(wù)器主要需要以下條件
APR 與APR-Util包
Perl兼容的正則表達(dá)式庫(kù)(PCRE)
C語言編譯環(huán)境(安裝pcre包還需要c++編譯工具)
-
確保您至少有50 MB的臨時(shí)可用磁盤空間可用挪捕。安裝后闯睹,服務(wù)器占用大約10 MB的磁盤空間
首先安裝pcre包。
安裝c++編譯器: 執(zhí)行rpm -ivh gcc-c++-4.8.5-16.el7.x86_64.rpm
解壓:tar zxvf pcre-8.38.tar.gz
進(jìn)入到目錄 cd pcre-8.38
執(zhí)行配置文件 ./configure
編譯 make
-
安裝 make install
apr包的安裝担神,apr包不用單獨(dú)安裝楼吃,只需把a(bǔ)pr包解壓到apache服務(wù)器解壓包對(duì)應(yīng)的目錄,在安裝apache服務(wù)器的時(shí)候加上安裝配置就可以妄讯,一起安裝了孩锡,步驟以下
解壓apache安裝包:tar zxvf httpd-2.4.28.tar.gz
-
拷貝apr包到指定的目錄并重命名
拷貝apr-1.6.3.tar.gz與apr-util-1.6.1.tar.gz到httpd-2.4.28/srclib目錄,cp apr-1.6.3.tar.gz httpd-2.4.28/srclib亥贸、 cp apr-util-1.6.1.tar.gz httpd-2.4.28/srclib躬窜。重命名 mv apr-util-1.6.1 apr-util、 mv apr-1.6.3 apr炕置。apr的重命名步驟不能少荣挨,否則安裝apache服務(wù)的時(shí)候無法找到apr包
執(zhí)行配置文件: ./configure --prefix=/root/mydata/apache --with-pcre=/usr/local/pcre --with-included-apr --enable-ssl --with-openssl-dir=/usr/local/ssl
編譯 make
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
#include <expat.h>
^
compilation terminated.
make[3]: *** [xml/apr_xml.lo] Error 1
make[3]: Leaving directory `/root/mydata/httpd-2.4.28/srclib/apr-util'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/mydata/httpd-2.4.28/srclib/apr-util'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mydata/httpd-2.4.28/srclib'
make: *** [all-recursive] Error 1
以上錯(cuò)誤需要安裝開發(fā)庫(kù) expat-1.95.7.tar.gz步驟如下:
- tar zxvf expat-1.95.7.tar.gz
- ./configure
- make
- make install
安裝 make install
啟動(dòng) ./bin/apachectl -k start
-
訪問 http://192.168.47.133/ 如下圖
出現(xiàn)上圖說明apache服務(wù)器已經(jīng)成功安裝男韧,下面只要是修改apach服務(wù)器的相關(guān)配置文件,讓其作為反向代理并為其添加ssl
首先設(shè)置虛擬主機(jī)
設(shè)置虛擬主機(jī)通過設(shè)置多個(gè)虛擬主機(jī)可以支持一臺(tái)物理服務(wù)器訪問多個(gè)域名默垄,就好像有多個(gè)服務(wù)器一樣此虑。打開配置文件/root/mydata/apache/conf/httpd.conf,去掉#Include conf/extra/httpd-vhosts.conf前面的#口锭,保存并退出朦前。然后打開httpd-vhosts.conf,創(chuàng)建/root/mydata/esdatadir目錄和/root/mydata/esdatadir/log鹃操,作為代理服務(wù)器的根路徑韭寸,注釋掉文件httpd-vhosts.conf中的以下代碼:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/root/mydata/apache/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/root/mydata/apache/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
httpd-vhosts.conf文件添加以下代碼段,其中esdata.com作為域名對(duì)外提供訪問
<VirtualHost *:80>
DocumentRoot "/apachedir"
ServerName esdata.com
ErrorLog "/apachedir/esdata.com-error_log"
CustomLog "/apachedir/esdata.com-access_log" common
<Directory />
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
在虛擬目錄apachedir下創(chuàng)建文件index.html荆隘,并寫入以下代碼段
<html><body><h1>It works www!</h1></body></html>
重啟apache服務(wù)器:./bin/apachectl -k restart
添加ip映射恩伺,范圍http://esdata.com,和上面訪問http://192.168.47.133 出現(xiàn)同樣的結(jié)果椰拒,說明虛擬主機(jī)設(shè)置成功
vi /etc/hosts
127.0.0.1 esdata.com
設(shè)置反向代理
先說一下本文檔反向代理的環(huán)境莫其,apache代理服務(wù)器安裝在虛擬機(jī)上,ip地址是192.168.47.133耸三,物理機(jī)的ip地址是192.168.2.40乱陡。為了測(cè)試反向代理,我在物理機(jī)上開了一個(gè)web應(yīng)用服務(wù)仪壮,通過apche作為反向代理來訪問該服務(wù)憨颠,而不是直接訪問。直接訪問如下圖
打開配置文件httpd.conf积锅,去掉以下module前面的#
#LoadModule proxy_module libexec/apache2/mod_proxy.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
通過以上module的命名我們可以了解到mod_proxy.so是基礎(chǔ)的代理配置爽彤,mod_proxy_http.so支持HTTP請(qǐng)求,mod_proxy_ftp.so支持FTP請(qǐng)求缚陷,mod_proxy_connect.so 支持HTTPS請(qǐng)求(HTTPS請(qǐng)求頭和報(bào)文是加密的适篙,代理服務(wù)器不能通過識(shí)別請(qǐng)求頭來獲取目的服務(wù)器的地址,所以在最開始建立連接時(shí)代理服務(wù)器需要打開一條從客戶端到服務(wù)器的端到端connect通道)
修改虛擬主機(jī)配置
我們把esdata.com的端口號(hào)改為443箫爷,讓esdata.com作為反向代理服務(wù)器嚷节,物理機(jī)192.168.2.40:8001上的web服務(wù)作為原始服務(wù)器,通過訪問反向代理服務(wù)器間接訪問原始服務(wù)器資源虎锚。配置代碼如下:
<VirtualHost *:443>
DocumentRoot "/apachedir"
ServerName esdata.com
ErrorLog "/apachedir/esdata.com-error_log"
CustomLog "/apachedir/esdata.com-access_log" common
<Directory />
AllowOverride none
Require all granted
</Directory>
#set proxy
ProxyPass / http://192.168.2.40:8001/
ProxyPassReverse / http://192.168.2.40:8001/
</VirtualHost>
驗(yàn)證
物理機(jī)的hosts文件需加上 192.168.47.133 esdata.com
重啟apache硫痰,訪問 http://esdata.com/login.html如下圖
為該apache反向代理添加ssl配置
首先使用OpenSSL創(chuàng)建私鑰文件
openssl genrsa -out esdata.key 2048
然后利用私鑰創(chuàng)建自簽名證書
openssl req -new -x509 -key esdata.key -out esdata.cer
需要自己填寫一些證書信息,如下圖:
-
修改服務(wù)器配置
去掉#Include /private/etc/apache2/extra/httpd-ssl.conf前面的#, 去掉#LoadModule ssl_module libexec/apache2/mod_ssl.so前面的#, 去掉#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so前面的#
-
修改httpd-ssl.conf配置窜护,加入以下配置
SSLCertificateFile "/root/mydata/apache/esdata.cer"
SSLCertificateKeyFile "/root/mydata/apache/esdata.key"
-
修改虛擬主機(jī)配置
<VirtualHost *:443> DocumentRoot "/apachedir" ServerName esdata.com ErrorLog "/apachedir/esdata.com-error_log" CustomLog "/apachedir/esdata.com-access_log" common SSLCertificateFile "/root/mydata/apache/esdata.cer" SSLCertificateKeyFile "/root/mydata/apache/esdata.key" <Directory /> AllowOverride none Require all granted </Directory> #set proxy ProxyPass / http://192.168.2.40:8001/ ProxyPassReverse / http://192.168.2.40:8001/ </VirtualHost>
驗(yàn)證效斑,重啟服務(wù)器sudo apachectl -k restart,(如何添加ssl啟動(dòng)不了柱徙,請(qǐng)?jiān)囅聦?dǎo)出openssl的依賴庫(kù)缓屠,export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib6)奇昙,如下圖:
以上是apache反向代理的配置,參考文檔
Apache HTTP 服務(wù)器版本 2.4:http://httpd.apache.org/docs/2.4/
apache的編譯與安裝 http://httpd.apache.org/docs/2.4/install.html
反向代理設(shè)置指南:http://httpd.apache.org/docs/2.4/howto/reverse_proxy.html
基于Apache搭建HTTP/HTTPS/正向代理/反向代理服務(wù)器 https://lpd-ios.github.io/2017/07/25/Apache-HTTP/