1. 程式人生 > >7、高效能web架構之Apche使用虛擬主機實現反向代理

7、高效能web架構之Apche使用虛擬主機實現反向代理

Apache反向代理:

前言介紹:

   反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。

   反向代理實現的方式很多,我這裡是結合上章的虛擬主機來實現反向代理功能。真實環境,業務很大的情況下虛擬主機可以使用物理機來代替。

拓撲圖:

反向代理的工作方式

通常的代理伺服器,只用於代理內部網路對Internet的連線請求,客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中。由於外部網路上的主機並不會配置並使用這個代理伺服器,普通代理伺服器也被設計為在Internet上搜尋多個不確定的伺服器,而不是針對Internet上多個客戶機的請求訪問某一個固定的伺服器,因此普通的Web代理伺服器不支援外部對內部網路的訪問請求。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。此時代理伺服器對外就表現為一個Web伺服器,外部網路就可以簡單把它當作一個標準的Web伺服器而不需要特定的配置。不同之處在於,這個伺服器沒有儲存任何網頁的真實資料,所有的靜態網頁或者CGI程式,都儲存在內部的Web伺服器上。因此對反向代理伺服器的攻擊並不會使得網頁資訊遭到破壞,這樣就增強了Web伺服器的安全性。
  反向代理方式和包過濾方式或普通代理方式並無衝突,因此可以在防火牆裝置中同時使用這兩種方式,其中反向代理用於外部網路訪問內部網路時使用,正向代理或包過濾方式用於拒絕其他外部訪問方式並提供內部網路對外部網路的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。

作用:

保護網站安全:任何來自Internet的請求都必須先經過代理伺服器。

配置快取功能加速Web請求:可以快取真實Web伺服器上的某些靜態資源,減輕真實Web伺服器的負載壓力。

實現負載均衡:充當負載均衡伺服器均衡地分發請求,平衡叢集中各個伺服器的負載壓力。

1、環境準備:

一臺centos7.2系統,給三個網絡卡(網絡卡ip地址為:192.168.10.106-108/24)

2、為虛擬主機準備網頁文件:

[[email protected] ~]# cat /usr/local/httpd/htdocs/aaa/index.html

<h1>aaa.server.com</h1>

[[email protected] ~]# cat /usr/local/httpd/htdocs/bbb/index.html

<h1>bbb.server.com</h1>

[[email protected] ~]# cat /usr/local/httpd/htdocs/ccc/index.html

<h1>ccc.server.com</h1>

3、配置虛擬主機:

[[email protected] ~]# cat /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory "/usr/local/httpd/htdocs">

    Order allow,deny

    Allow from all

</Directory>

<VirtualHost 192.168.10.106>

    DocumentRoot "/usr/local/httpd/htdocs/aaa"

    ServerName aaa.server.com

    ErrorLog "logs/aaa.server.com-error_log"

    CustomLog "logs/aaa.server.com-access_log" common

</VirtualHost>

<VirtualHost 192.168.10.107>

    DocumentRoot "/usr/local/httpd/htdocs/bbb"

    ServerName bbb.server.com

    ErrorLog "logs/bbb.server.com-error_log"

    CustomLog "logs/bbb.server.com-access_log" common

</VirtualHost>

<VirtualHost 192.168.10.108>

    DocumentRoot "/usr/local/httpd/htdocs/ccc"

    ServerName ccc.server.com

    ErrorLog "logs/ccc.server.com-error_log"

    CustomLog "logs/ccc.server.com-access_log" common

</VirtualHost>

[[email protected] ~]# vi /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf    //去掉#號,載入此Include

[[email protected] ~]# /usr/local/httpd/bin/apachectl -k restart

4、測試:

5、現在開始配置反向代理:

1)首先確保Apache有這些模組,在Apache根目錄下確認有這些模組,主要包含以下模組:

mod_proxy.so

mod_proxy_ajp.so

mod_proxy_balancer.so

mod_proxy_connect.so

mod_proxy_http.so

2)配置反向代理的檔案

[[email protected] ~]# cat /usr/local/httpd/conf/extra/httpd-proxy.conf

LoadModule proxy_module modules/mod_proxy.so #proxy模組

LoadModule proxy_connect_module modules/mod_proxy_connect.so #連結的模組

LoadModule proxy_http_module modules/mod_proxy_http.so #給http做代理模組

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #負載均衡模組

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so #演算法模組,根據server的請求量

LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so #演算法模組,根據server流量

LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so #演算法模組,根據server繁忙程度

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

ProxyRequests Off #如果沒有對伺服器採取安全措施之前,請不要開啟此項<Proxy balancer://mycluster> #lb叢集組的名稱

BalancerMember http://192.168.10.107:80 #叢集組成員

BalancerMember http://192.168.10.108:80 #叢集組成員

</Proxy>

ProxyPass /demo balancer://mycluster  #跳轉,和lb叢集組名稱對應

ProxyPassReverse /demo balancer://mycluster

3)手動新增Include配置:

[[email protected] ~]# vi /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-proxy.conf

4)測試:

5)新增web管理並重啟服務

[[email protected] ~]# cat /usr/local/httpd/conf/extra/httpd-proxy.conf

#aaa.server.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.10.107:80

BalancerMember http://192.168.10.108:80

</Proxy>

ProxyPass /demo balancer://mycluster

ProxyPassReverse /demo balancer://mycluster

<Location /manager>

SetHandler balancer-manager

Order Deny,Allow

Allow from all

</Location>

[[email protected] ~]#

[[email protected] ~]# /usr/local/httpd/bin/apachectl -t

Syntax OK

[[email protected] ~]# /usr/local/httpd/bin/apachectl -k restart

開啟瀏覽器管理介面:http://aaa.server.com/manager

到這裡apache反向代理就此結束!請看下一篇。

相關推薦

6高效能web架構Apche虛擬主機配置

構建web虛擬主機: 一、前言: 虛擬web主機指的是在同一臺伺服器中執行多個web站點,其中的每一個站點實際上並不獨立佔用整個伺服器。因此被稱為“虛擬的”web主機,通過虛擬web主機服務可以充分利用伺服器的硬體資源,從而大大降低了網站構建及執行成本。 使用htt

7高效能web架構Apche使用虛擬主機實現反向代理

Apache反向代理: 前言介紹:    反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個

2高效能web架構DNS負載均衡(LVS-DR+keepalived實現DNS和web輪詢)

LVS-DR+keepalived+DNS實現DNS高可用性: 一、介紹: 結合上一章的DNS主從複製,按現在大多數公司的需求是滿足不了的。DNS配置雖然簡單易用,但是它在網路中起到了主導作用。 如果客戶端設定的這臺首選DNS伺服器剛好宕機,即使客戶端還設定了備用DNS

13高效能web架構用Codis實現Redis分散式叢集

通過codis實現redis叢集 Codis 是一個分散式 Redis 解決方案, 對於上層的應用來說, 連線到 Codis Proxy 和連線原生的 Redis Server 沒有明顯的區別 (不支援的命令列表https://github.com/CodisLabs/

9高效能web架構壓力測試

使用ab進行對web伺服器壓力測試: 前言: 當我們部署完一臺web伺服器之後,想要知道的這臺伺服器的效能。就要知道他的吞吐率和響應時間分別是多少,怎麼看呢?那就需要對它進行壓力測試。 1)吞吐率/響應時間:requests/sec; 2)壓力測試:使用ab工具進行

12高效能web架構redis介紹與使用

Redis 簡介 Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。 Redis 與其他 key - value 快取產品有以下三個特點: Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。

11高效能web架構tomcat安全管理規範

Tomcat的常用安全管理規範: 如何修改tomcat的預設路徑: 1、主配置檔案是server.xml ,如何修改tomcat預設訪問路徑: a、建立jsp目錄和index.jsp頁面: [[email protected] ~]# mkdir

day77_淘淘商城專案_10_ Linux下的Nginx代理詳解(配置虛擬主機+實現反向代理+實現負載均衡+高可用) + 單點登入系統工程搭建 + SSO系統介面文件講解_匠心筆記

淘淘商城專案_10 1、目前訪問系統使用的方式存在的問題 2、什麼是nginx 3、nginx的應用場景 4、nginx的安裝 4.1、要求的安裝環境 4.2、安裝步驟 4.3、啟動nginx

高效能web 架構redis 快取叢集

redis 叢集 介紹 redis是一個key-value記憶體資料庫。它支援儲存的value型別包括字串、list(連結串列)、set(集合)、有序集合和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove, redis支援各種不同方式的排序

高效能web 架構 mysql 讀寫分離

高效能web架構主要保證程式的高可用性和高併發性. 高可用就是 保證程式在99.99%的情況下可以使用,不會因為單機節點故障整體崩潰.  高併發說到底也是為了高可用服務.保證在大量併發的時候服務不會宕機. 高效能web架構主要體現在以下方面 資料庫讀寫分離,因為大

linux運維架構路-dnsmasq+Stunnel+sniproxy加密代理

安裝 配置 mkdir 國外 之路 ipv6 nobody gettext build 1、環境介紹 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) [[ema

Nginx實戰 1.7-1.11 Nginx架構分析,虛擬機器配置

1.7-1.9 Nginx架構分析 Nginx模組化結構 Nginx涉及到的模組分為核心模組、標準HTTP模組、可選HTTP模組、郵件服務模組以及第三方模組等五大類。 核心模組 核心模組是指Nginx伺服器正常執行時必不可少的模組,它們提供了Nginx最基本最核心的服務,如程序管理、許可

7CentOS7 安裝Docker擴充套件(設定守護程序對外開放)

設定守護程序對外開放   雖然預設下你的Docker daemon只允許在本機訪問,但有時候也有充足理由讓其他人訪問。你可能有什麼問題想讓其他人遠端除錯,或者你可能想允許DevOps工作流來啟動主機上的一個程序。     問題 你想對其

高效能網站架構快取篇—Redis叢集搭建

         看過高效能網站架構之快取篇--Redis安裝配置和高效能網站架構之快取篇--Redis使用配置埠轉發這兩篇文章的,相信你已經對redis有一定的瞭解,並能夠安裝上,進行簡單的使用了,但是在咱們的實際應用中,使用redis肯定不會使用單機版,不光是redis

淺談web架構演化過程

前言 最近在開發過程中,遇到很多緩解配置的問題,工程很難啟動,也不知道為什麼環境需要這麼多配置的意義。就在這個時候,一本好書《大型網站技術:核心原理與案例分析》給我帶來全新視角,必須強勢安利一把。連結地址 本文先淺談書中所提到的web架構演化過程。如果經歷的專案足夠多

淺談web架構架構設計(總結)

架構模式 先來說說模式: 每一個模式描述了一個在我們周圍不斷重複發生的問題及該問題解決方案的核心。這樣,你就能一次又一次地用該方案而不必做重複工作 。 先來說說常見的網站架構模式。這裡沒有涉及具體實現過程,只是簡單介紹其思想和原理,方便日後有用到再深入瞭解。 分層 分層是企業應用系統中最常見的一種

7SSM框架-SpringIOC的註解注入(7

用註解來向Spring容器註冊Bean。需要在applicationContext.xml中註冊<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>。 如:在base-pa

7dubbo原始碼分析 服務本地暴露

在上一篇文章我們分析了一下 dubbo 在服務暴露發生了哪些事,今天我們就來分析一下整個服務暴露中的本地暴露。(PS:其實我感覺本地暴露蠻雞肋的)。本地暴露需要服務提供方與服務消費方在同一個 JVM。下面我們來寫一個本地暴露使用的例子: 1) DemoS

Web架構Nginx基礎配置

[TOC] # 1、Nginx 虛擬主機 所謂的虛擬主機,在Web服務裡就是一個獨立的網站站點,這個站點對應獨立的域名(也可能是IP或埠),具有獨立的程式及資源目錄,可以獨立地對外提供服務供使用者訪問。 在Nginx中則使用一個server{} 標籤來標識一個虛擬主機,一個Web服務裡可以有多個虛擬主機標

red hat 6&red hat 7 Apache網站搭建(二)虛擬主機

red hat 6&red 虛擬Web 主機指的是在同一臺服務器中運行多個Web 站點,其中的每一個站點實際上並不獨立占用整個服務器,因此被稱為‘虛擬”Web 主機。通過虛擬Web 主機服務可以充分利用服務器的硬件資源,從而大大降低網站構建及運行成本。使用httpd 可以非常方便地構建虛擬主機服務