成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

Apache實現反向代理詳解

實驗目的

通過Apache實現反向代理的功能,類似Nginx反向代理和HAProxy反向代理。

環境準備

邏輯架構如下

前端是apche服務器,監聽80端口,后端有兩臺web服務器,分別是node1和node2

Apache實現反向代理詳解

準備兩臺機器,node1和node2。需要安裝的服務如下,由于實驗環境資源有限,把反向代理也安裝在node1上

Apache實現反向代理詳解

實驗系統版本

[root@linux-node1 ~]# cat /etc/RedHat-release
CentOS Linux release 7.3.1611 (Core)
[root@linux-node1 ~]# uname -rm
3.10.0-514.el7.x86_64 x86_64
[root@linux-node1 ~]#

配置兩臺節點做web服務器,監聽8080端口

關閉firewalld和selinux,主機名改名。按上面表格更改。這里就不寫具體執行步驟了 

兩臺機器安裝epel7的阿里云的源,安裝一些依賴包和常用工具包,安裝httpd,更改默認監聽端口為8080

rpm -ivh  http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y gcc glibc gcc-c++  make screen tree lrzsz
yum install httpd -y
sed -i ‘s#Listen 80#Listen 8080#g’ /etc/httpd/conf/httpd.conf
systemctl restart httpd.service
netstat -lntp | grep 8080

分別設置首頁文件。用以區分不同的機器

echo “linux-node2.example.com” > /var/www/html/index.html
echo “linux-node1.example.com” > /var/www/html/index.html

 
最終達到如下效果

[root@linux-node2 ~]# curl http://10.0.1.106:8080/
linux-node2.example.com
[root@linux-node2 ~]# 
[root@linux-node1 ~]# curl http://10.0.1.105:8080/
linux-node1.example.com
[root@linux-node1 ~]# 

node1上配置apache做反向代理

編譯安裝apache軟件包

node1同時做反向代理配置,執行如下命令,把源碼包編譯安裝在/usr/local目錄下,最后做個軟鏈接。

看到需要安裝apr和pcre相關的包

簡要來說apr是屏蔽底層操作系統細節用的。pcre正則匹配用的。openssl支持加密協議

rpm -ivh  http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y gcc glibc gcc-c++  make screen tree lrzsz
yum install -y apr-devel apr-util-devel pcre-devel openssl-devel
cd /usr/local/src
wget http://archive.apache.org/dist/httpd/httpd-2.4.18.tar.gz
tar xfz httpd-2.4.18.tar.gz
cd httpd-2.4.18
./configure –prefix=/usr/local/httpd-2.4.18 –enable-so –enable-modules=”all”
make && make install
echo $?
ln -s /usr/local/httpd-2.4.18/ /usr/local/httpd

APR(Apache portable Run-time libraries,Apache可移植運行庫),主要為上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。
在早期 的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,并針對不同的平臺調用不同的處理函數。

那安裝Apache的時候為什么必須安裝Apr呢?
在早期的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,并針對不同的平臺調用不同的處理函數。
隨著Apache的進一步開發,Apache組織決定將這些通用的函數獨立出來并發展成為一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用APR而已。
一般情況下,APR開發包很容易理解為僅僅是一個開發包,不過事實上并不是。
目前,完整的APR實際上包含了三個開發包:apr、apr-util以及apr-iconv,每一個開發包分別獨立開發,并擁有自己的版本。
apr中包含了一些通用的開發組件,包括mmap,DSO等等
apr-util該目錄中也是包含了一些常用的開發組件。這些組件與apr目錄下的相比,它們與apache的關系更加密切一些。比如存儲段和存儲段組,加密等等。
apr-iconv包中的文件主要用于實現iconv編碼。目前的大部分編碼轉換過程都是與本地編碼相關的。在進行轉換之前必須能夠正確地設置本地編碼。
因此假如兩個非本地編碼A和B需要轉換,則轉換過程大致為A->Local以及Local->B或者B->Local以及Local->A。

node1上apache編譯安裝之后,檢查語法以及啟動服務 

[root@linux-node1 httpd-2.4.18]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@linux-node1 httpd-2.4.18]# /usr/local/httpd/bin/apachectl -k start
[root@linux-node1 httpd-2.4.18]#

接下來配置反向代理模塊

打開apache官網幫助

http://httpd.apache.org/docs/2.4/
找到左邊“模塊”
 
Apache實現反向代理詳解 

 點擊進去,找到如下mod_proxy,就是這個模塊,讓apache可以做反向代理

Apache實現反向代理詳解

 

 接下配準備配置,先查看下配置文件的目錄。看到有個extra目錄,類似nginx的extra目錄,可以把一些定制化的配置放在extra目錄里,然后在主配置文件httpd.conf把它include進來

這樣降低配置文件之間的耦合性,不僅方便管理,而且配置文件個別錯誤,不影響其余配置。這里就準備新建一個反向代理相關的配置文件,放在extra目錄下

先從主配置文件拷貝一些模板性的配置

Apache實現反向代理詳解

設置主配置文件ServerName

[root@linux-node1 conf]# pwd
/usr/local/httpd/conf
[root@linux-node1 conf]# vim httpd.conf
[root@linux-node1 conf]# grep ServerName httpd.conf
# ServerName gives the name and port that the server uses to identify itself.
ServerName linux-node1.example.com:80
[root@linux-node1 conf]#

apache和nginx一樣,默認會Include一些配置文件,下面的proxy-html.conf就是默認加載的配置文件。我沒做任何操作,安裝之后系統默認的

Apache實現反向代理詳解

查看它默認加載的模塊
Apache實現反向代理詳解 
 
找到負載均衡的部分,很多proxy開頭的部分。復制相關參數

Apache實現反向代理詳解 

在extra目錄下新建httpd-proxy.conf文件。文件名沒要求,可以自定義。但是最好能通過配置文件知道做什么用的

把上面主配置文件的反向代理和負載均衡相關的配置復制進來。

同時配置后端節點。下面的/demo 是自定義的。可以隨便寫,比如寫成/test123

[root@linux-node1 extra]# pwd
/usr/local/httpd/conf/extra
[root@linux-node1 extra]# cat httpd-proxy.conf
#www.linux-node1.example.com 
#proxy demo
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://10.0.1.105:8080
BalancerMember http://10.0.1.106:8080
</Proxy>
ProxyPass /demo balancer://mycluster
ProxyPassReverse /demo balancer://mycluster
[root@linux-node1 extra]#
 

在主配置文件把這個配置文件中Include進來

Apache實現反向代理詳解

檢查語法,沒發現語法錯誤

[root@linux-node1 extra]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@linux-node1 extra]#
  

啟動時沒啟動成功
[root@linux-node1 extra]# /usr/local/httpd/bin/apachectl -k restart
[root@linux-node1 extra]# netstat -lntp | grep 80
[root@linux-node1 extra]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@linux-node1 extra]# /usr/local/httpd/bin/apachectl -k restart
httpd not running, trying to start
[root@linux-node1 extra]# netstat -lntp | grep 80
[root@linux-node1 extra]#
 
看日志提示,是缺少模塊
 
[root@linux-node1 logs]# pwd
/usr/local/httpd/logs
[root@linux-node1 logs]#
 
[root@linux-node1 logs]# tail -f error_log
[Sun Feb 26 23:00:09.288503 2017] [mpm_worker:notice] [pid 19856:tid 139866031015808] AH00292: Apache/2.4.18 (Unix) configured — resuming normal operations
[Sun Feb 26 23:00:09.288632 2017] [core:notice] [pid 19856:tid 139866031015808] AH00094: Command line: ‘/usr/local/httpd-2.4.18/bin/httpd’
[Sun Feb 26 23:48:31.206384 2017] [mpm_worker:notice] [pid 19856:tid 139866031015808] AH00298: SIGHUP received.  Attempting to restart
[Sun Feb 26 23:48:31.210297 2017] [proxy_balancer:emerg] [pid 19856:tid 139866031015808] AH01177: Failed to lookup provider ‘shm’ for ‘slotmem’: is mod_slotmem_shm loaded??
[Sun Feb 26 23:48:31.210351 2017] [:emerg] [pid 19856:tid 139866031015808] AH00020: Configuration Failed, exiting
[Sun Feb 26 23:50:12.882611 2017] [proxy_balancer:emerg] [pid 20021:tid 139920264771456] AH01177: Failed to lookup provider ‘shm’ for ‘slotmem’: is mod_slotmem_shm loaded??
[Sun Feb 26 23:50:12.882703 2017] [:emerg] [pid 20021:tid 139920264771456] AH00020: Configuration Failed, exiting

 百度下錯誤

http://blog.csdn.net/snihcel/article/details/38844667
如果你遇到了服務無法啟動的情況,也不報錯的,查看logs下的日志,首次安裝報錯如下:
AH01177: Failed to lookup provider ‘shm’ for ‘slotmem’: is mod_slotmem_shm loaded??
我想日志已經說的很清楚了,這里編譯安裝后,配置文件conf/httpd.conf沒有開啟mod_slotmem_shm模塊,編輯該文件,放開
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
 
在httpd-proxy.conf配置文件中添加這一行
 
[root@linux-node1 extra]# cat httpd-proxy.conf
#www.linux-node1.example.com 
#proxy demo
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.105:8080
BalancerMember http://192.168.1.106:8080
</Proxy>
ProxyPass /demo balancer://mycluster
ProxyPassReverse /demo balancer://mycluster
[root@linux-node1 extra]#
 
再次啟動,成功
 
[root@linux-node1 logs]# /usr/local/httpd/bin/apachectl -k start
[root@linux-node1 logs]# netstat -lntp | grep 80
tcp6      0      0 :::80                  :::*                    LISTEN      20034/httpd     
[root@linux-node1 logs]#

瀏覽器訪問,測試成功

現在是輪詢算法。
Apache實現反向代理詳解
Apache實現反向代理詳解
 
修改配置文件,在最后打開管理功能
 
[root@linux-node1 extra]# cat httpd-proxy.conf
#www.linux-node1.example.com 
#proxy demo
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://10.0.1.105:8080
BalancerMember http://10.0.1.106:8080
</Proxy>
ProxyPass /demo balancer://mycluster
ProxyPassReverse /demo balancer://mycluster
<Location /manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Allow from all
</Location>
[root@linux-node1 extra]#

優雅重啟

 
[root@linux-node1 ~]# /usr/local/httpd/bin/apachectl -k graceful
[root@linux-node1 ~]#

Method看到默認的方法是基于requests
生產的配置需要設置權限,不要對外開放,可以允許內網一個網段訪問。
權限設置和apache的一樣

Apache實現反向代理詳解

點開左邊超鏈接之后可以設置權重

Apache實現反向代理詳解

反向代理配置虛擬主機 

模擬用戶真實訪問環境,用戶是通過域名訪問的,而不是IP,這里開始配置虛擬主機
 
extra默認有一個配置文件,httpd-vhosts.conf可以復制部分當模板
 
[root@linux-node1 htdocs]# cd /usr/local/httpd/conf/extra/
[root@linux-node1 extra]# ll
總用量 72
-rw-r–r– 1 root root  2891 2月  26 22:42 httpd-autoindex.conf
-rw-r–r– 1 root root  1842 2月  26 22:42 httpd-dav.conf
-rw-r–r– 1 root root  2942 2月  26 22:42 httpd-default.conf
-rw-r–r– 1 root root  1119 2月  26 22:42 httpd-info.conf
-rw-r–r– 1 root root  5078 2月  26 22:42 httpd-languages.conf
-rw-r–r– 1 root root  1035 2月  26 22:42 httpd-manual.conf
-rw-r–r– 1 root root  4444 2月  26 22:42 httpd-mpm.conf
-rw-r–r– 1 root root  2237 2月  26 22:42 httpd-multilang-errordoc.conf
-rw-r–r– 1 root root  858 2月  27 00:14 httpd-proxy.conf
-rw-r–r– 1 root root 13464 2月  26 22:42 httpd-ssl.conf
-rw-r–r– 1 root root  694 2月  26 22:42 httpd-userdir.conf
-rw-r–r– 1 root root  1477 2月  26 22:42 httpd-vhosts.conf
-rw-r–r– 1 root root  3161 2月  26 22:42 proxy-html.conf
[root@linux-node1 extra]#

 
可以復制下面文件的配置
 

Apache實現反向代理詳解 
把原先httpd-proxy.conf配置文件里2行ProxyPass引用的放在虛擬主機里
 
<VirtualHost *:80>
    ServerAdmin webmaster@nmap.example.com
    DocumentRoot “/opt”
    ServerName www.apache-nmap.com
    ServerAlias apache-nmap.com
    ErrorLog “logs/nmap-error_log”
    CustomLog “logs/nmap-access_log” common
    ProxyPass / balancer://mycluster
    ProxyPassReverse / balancer://mycluster
</VirtualHost> 

配置截圖如下

Apache實現反向代理詳解

 
檢查語法,重新加載
 
[root@linux-node1 extra]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@linux-node1 extra]# /usr/local/httpd/bin/apachectl -k graceful
[root@linux-node1 extra]#
 
window的hosts文件添加域名解析
 
10.0.1.105  www.apache-nmap.com  apache-nmap.com
 
通過域名訪問成功
Apache實現反向代理詳解
Apache實現反向代理詳解
 
 
還可以設置權重等一些參數

Apache實現反向代理詳解

apache做反向代理生產并不建議,因為性能不高。配置麻煩

關于IO這塊
apache使用select模式,性能不高
nginx使用epel模型,性能高
varish和haproxy都是使用epel模型的,性能高

可能一些特殊場景會用到它做反向代理:可能某公司一些web服務器必須和apache反向代理結合,其余反向代理,比如nginx和haproxy無法使用。不得不用apache做反向代理了。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚拍精品一区二区三区探花| 欧美午夜性春猛交XXX| 无码少妇一区二区| 国产婷婷丁香五月缴情成人网 | 日韩AⅤ人妻无码一区二区| 边做边爱完整版MP3在线下载| 色妞AV永久一区二区国产AV| 国产成人无码国产亚洲| 亚洲AV怡红院AV男人的天堂| 久久婷婷色五月综合图区| 99精品国产高清一区二区| 色噜噜久久综合伊人一本| 女性高爱潮AAAA级视频免费 | 动漫成人无码精品一区二区三区 | 四虎影视永久地址WWW成人| 非洲妓女BBWBBWW| 伊人久久大香线蕉AV综合| 亚洲日韩成人AV无码网站| 97精品伊人久久大香线蕉app| WWW.亚洲精品色情AⅤ色戒| 俄罗斯老少配BBW| 国产午夜视频在线观看720P| 久久久AV波多野一区二区| 女儿的朋友6中汉字| 好男人官网资源在线观看| 在线观看国产一区二区三区| 少妇愉情理仑片高潮| 精品熟人妻一区二区三区在线| 爆乳JUFD汗だく肉感| 亚洲AV无码成H人动漫无遮挡| 人妻丰满熟AV无码区HD| 另类小说激情婷婷久久| 久久99精品网久久| 久久99精品久久久久免费| 精品欧洲AV无码一区二区男男| 国产无套无码AⅤ在线观看| 激情无码人妻又粗又大| 玩弄丰满少妇XXXXX性多毛| 国内精品乱码卡一卡2卡三卡| 成人免费无码不卡毛片| 成人毛片无码一区二区| 成人亚洲综合AV天堂| 疯狂做受ⅩXXX高潮欧美| 粉嫩粉嫩的18在线免免费观看| 丁香婷婷在线成人播放视频| 国产超碰人人模人人爽人人添 | 人妻丰满熟妇A无码区| 欧美巨大XXXX做受高清| 日韩AV影院在线观看| 无码国产精品一区二区免费VR| 小雪要撑破了黑人好大| 亚洲日本乱人伦片中文| 中文字幕亚洲一区二区VA在线| ACG性奴成熟人妻全彩漫画| 成人污污污WWW网站免费| 国产超碰AV人人做人人爽| 激情影视乱码AV| 男人靠女人免费视频网站| 日产乱码一二三区别免费一| 吸咬奶头狂揉60分钟视频| 亚洲色婷婷综合开心网| 在线视频精品中文无码| 亚洲丰满熟女一区二区V| 亚洲成A人片在线观看中文| 四虎必出精品884| 亚洲 欧洲 日产 经典| 日韩人妻无码免费视频一区二区三区| 免费夜里18款禁用B站软粉色| 无码国产精品一区二区免费模式| 中文字幕肉感巨大的乳专区| 国产色婷婷精品综合在线| 欧美性XXXXX极品| 亚洲精品无码久久久久久小说| 成人免费无码大片A毛片| 狂野欧美性猛XXXX乱大交 | 久久精品国产久精国产思思| 色综合久久精品亚洲国产消防| 真人新婚之夜破苞第一次视频 | BT天堂在线WWW最新版官网| 精产国品一二三产品麻豆| 上到少妇叫爽TUBE| 性欧美人与ZOZOXXXX视频| 国语对白做受XXXXX在线中| 日韩AV无码精品人妻系列| 在线观看特色大片免费网站| 国产一产二产三精华液| 日产无码精品一区二区三区| 在线 亚洲 国产 欧美| 国色天香果冻传媒国卡1区| 少妇人妻系列无码专区视频| 99久久综合狠狠综合久久AⅤ| 久久96国产精品久久| 香港三日本8A三级少妇三级99| 成人免费高清A级毛片| 男人J放进女人J免费视频无遮挡| 亚洲精品无码久久久久Y| 国产精品午睡沙发系列| 日本亚洲色欲网站WWW| 92成人午夜福利一区二区| 久久99精品久久久久久9| 西西人体444www大胆无码视频| 超薄肉色丝袜一二三四区| 女性自慰网站免费观看W| 亚洲午夜国产精品无码| 国产三级精品三级男人的天堂| 色狠狠AV一区二区三区| ZOMBIE老头SUPREME| 你日的我走不了路了| 伊人色综合网一区二区三区| 精品国产第一国产综合精品| 无码中文字幕AV久久专区| 国产AV无码专区亚洲AV| 日韩A人毛片精品无人区乱码| ASS中国人体欣赏PICS| 蜜臀国产AV天堂久久无码蜜臀| 夜间十八款禁用软件APP下载| 精品国产AV 无码一区二区三区| 性中国妓女毛茸茸视频| 国产精品无码无卡无需播放器 | 草莓视频在线播放视频| 欧洲亚洲国产成人综合色婷婷| 69美女黑人做受XXXXXⅩ| 免费A级毛片无码免费视频1| 永久免费AV网站| 久久人人妻人人做人人爽| 亚洲自国产拍揄拍| 久久久久久精品免费免费WE| 亚洲日韩在线成人AV电影网站| 极品妇女扒开粉嫩小泬| 亚洲国产精品成人一区二区在线| 国语自产偷拍精品视频偷| 亚洲AV永久无码精品无码自慰 | 久久精品亚洲中文无东京热 | 综合无码一区二区三区| 免费观看男女AV入口网站| 一炕四女被窝交换| 麻豆AV一区二区三区| 中文字幕无码视频手机免费看 | 国产在线观看无遮挡无码AⅤ多人| 玩肥熟老妇BBW视频| 国产丰满大屁股XXXX| 无码人妻精一区二区三区| 国产女主播喷水视频在线观看| 校花娇喘呻吟校长陈若雪视频| 国产免费AV片在线播放| 亚洲AV成人无码网站不卡| 近親五十路六十被亲子中出| 亚洲一区二区三区蜜桃| 美女裸体无遮挡永久免费观看网站 | 蜜桃久久久久久精品免费观看| 中文字幕亚洲综合久久| 欧美乱大交XXXXX| 波多野结衣AV电影在线观看| 少妇的丰满人妻HD高清| 国产大屁股喷水视频在线观看| 性少妇TUBEVIDEOS| 精品亚洲成A人无码成A在线观看| 一本之道AV不卡精品| 女儿儿媳陪自己玩的心情说说| WWW免费视频在线观看播放| 日韩精品无码人成视频手机| 国产国语对白又大又粗又爽| 亚洲成AV人片在线观看| 久久婷婷国产综合精品| 97人妻人人揉人人躁人人| 日本特黄特色AAA大片免费| 国产好大好硬好爽免费不卡| 亚洲高清成人AV电影网站| 老师上课没戴奶罩看到奶头| AV天堂精品久久久久2| 少妇粗大进出白浆嘿嘿视频| 豪妇荡乳1一5潘金莲2在线| 伊在人亚洲香蕉精品区| 亲孑伦一区二区三区| 国产成人无码一区二区在线播放| 亚洲AV中文无码字幕色最| 久久嫩草精品久久久久精品| BBBBBB嫩BBBBBB| 天天摸天天做天天爽水多| 精品久久久无码中字| 97人妻碰碰视频免费上线| 少妇被又大又粗又爽毛片| 激情伊人五月天久久综合| 1313午夜精品理论片| 少妇被黑人到高潮喷出白浆| 京东影业JD008苏小小| 99久久国产自偷自偷免费一区| 撕开奶罩揉吮奶头高潮视频| 精品日韩亚洲AV无码| JIZZJIZZ日本护士视频| 午夜福利YW在线观看2020| 久久综合狠狠综合久久| 产后漂亮奶水人妻| 亚洲不卡无码WWW一区二区三区| 牛和人交VIDE欧关ⅩXOO| 国产极品美女高潮无套| 在线播放无码后入内射少妇| 丝袜一区二区三区在线播放| 久久久久久久波多野结衣高潮| 成熟丰满女人丰满妇女aⅴ|