1、理論部分

1.1、Reverse Proxy概念
是指以代理伺服器來接受internet上的請求,然後将請求轉發給内部網絡上的伺服器,并将伺服器上得到的結果傳回給internet上的請求連接配接用戶端。
1.2、Reverse Proxy的工作流程
1)用戶端發出通路請求到Reverse Proxy伺服器
2)Reverse Proxy伺服器經過防火牆的特定通路,将請求轉發到内容伺服器
3)内容伺服器将傳回結果經過原通道傳回給Reverse Proxy伺服器
4)Reverse Proxy将檢索到的資訊發送給用戶端。
注意:如果内容伺服器傳回錯誤消息,代理伺服器會先行截取該消息并更改标頭中列出的任何 URL,然後再将消息發送給客戶機。如此可防止外部客戶機擷取内部内容伺服器的重定向 URL。
1.3、Reverse Proxy的特征
1)Reverse Proxy對外表現為一台Web伺服器而不需要特定的Web伺服器配置
2)Reverse Proxy伺服器不儲存任何網頁真實資料,所有的靜态頁面或者CGI程式,都存于内部Web伺服器上。
1.4、Reverse Proxy的作用
1)增加伺服器的安全性
2)提高服務的通路性能
1.5、Reverse Proxy的分類
1)普通反向代理
2)安全反向代理 - 使用安全套接字(SSL)協定加密
1.6、Reverse Proxy的應用場景
CDN的全稱是Content Delivery Network,即内容分發網絡。其基本思路是盡可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使内容傳輸的更快、更穩定。通過在網絡各處放置反向代理節點伺服器所構成的在現有的網際網路基礎之上的一層智能虛拟網絡,CDN系統能夠實時地根據網絡流量和各節點的連接配接、負載狀況以及到使用者的距離和響應時間等綜合資訊将使用者的請求重新導向離使用者最近的服務節點上。其目的是使使用者可就近取得所需内容,解決 Internet網絡擁擠的狀況,提高使用者通路網站的響應速度。
2、實驗部分
2.1、實驗基礎資訊
伺服器資訊:
proxySer:
ip address=10.168.0.185
hostname=proxySer
tomcatSer:
ip address=10.168.0.188
hostname=tomcatSer
client:
ipaddress=10.168.0.8
hostname=client
2.2、tomcat的安裝和配置
In TomcatSer
2.2.1、step1
安裝yum源:
yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps tomcat6-docs-webapp tomcat6-javadoc java-1.7.0-openjdk
2.2.2、step2
啟動tomcat服務和設定開機自啟動:
/etc/init.d/tomcat6 start
chkconfig tomcat6 on
2.2.3、step3
建立程式目錄:
#建立程式目錄1
mkdir -p /home/wwwroot/w1.cmdschool.org
chown root:tomcat /home/wwwroot/w1.cmdschool.org
echo w1.cmdschool.org > /home/wwwroot/w1.cmdschool.org/index.html
#建立程式目錄2
mkdir -p /home/wwwroot/w2.cmdschool.org
chown root:tomcat /home/wwwroot/w2.cmdschool.org
echo w2.cmdschool.org > /home/wwwroot/w1.cmdschoo2.org/index.html
2.2.4、step4
建立虛拟伺服器:
用<!---->注解掉以下代碼:
代碼1:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
代碼2:
</Host>
新開一行并建立于<Host ...></Host>下面
<Host name="localhost" appBase="/home/wwwroot/w1.cmdschool.org"
unpackWARs="false" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context path="" docBase="." debug="0" reloadable="true" crossContext="true"/>
</Host>
2.2.5、step5
開啟多tomcat同時工作的模式:
于<Server ..></Server>标簽内部加入如下代碼:
<!-開啟第二個tomcat->
<Service name="Catalina8081">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina8081" defaultHost="localhost">
<Host name="localhost" appBase="/home/wwwroot/w2.cmdschool.org"
unpackWARs="false" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context path="" docBase="." debug="0" reloadable="true" crossContext="true"/>
</Host>
</Engine>
</Service>
<!-開啟第三個tomcat->
<Service name="Catalina8082">
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina8081" defaultHost="localhost">
<Host name="localhost" appBase="/home/wwwroot/w2.cmdschool.org"
unpackWARs="false" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context path="" docBase="." debug="0" reloadable="true" crossContext="true"/>
</Host>
</Engine>
</Service>
2.2.6、step6
重新開機tomcat服務:
/etc/init.d/tomcat6 restart
2.2.7、step7
防火牆配置:
vim編輯/etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8082 -j ACCEPT
/etc/init.d/tomcat6 restart
2.2.8、step8
測試
In proxySer
Tomcat服務測試:
curl http://10.168.0.188:8080
curl http://10.168.0.188:8081
curl http://10.168.0.188:8082
2.3、nginx的安裝和配置
In proxySer:
2.3.1、step1
yum源的安裝
yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx
2.3.2、step2
vim編輯/etc/nginx/nginx.conf
把原來的http{}内容全部清除,添加内容如下:
http {
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m
inactive=24h max_size=1g;
include /etc/nginx/conf.d/*.conf;
}
增加緩存目錄
mkdir -p /data/nginx/cache
清理預設配置:
mkdir /etc/nginx/conf.d/backup
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/backup
增加代理伺服器:
vim編輯/etc/nginx/conf.d/w1.cmdschool.org.conf
server {
listen 81;
location / {
proxy_pass http://10.168.0.188:8080;
proxy_set_header Host $host;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
}
vim編輯/etc/nginx/conf.d/w2.cmdschool.org.conf
server {
listen 82;
location / {
proxy_pass http://10.168.0.188:8081;
proxy_set_header Host $host;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
}
server {
listen 83;
location / {
proxy_pass http://10.168.0.188:8082;
proxy_set_header Host $host;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
}
2.3.3、step3
啟動nginx服務并設定開機自啟動
/etc/init.d/nginx start
chkconfig nginx on
2.3.4、step4
-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 82 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 83 -j ACCEPT
In clentSer:
2.3.5、step5
nginx反向代理測試:
curl http://10.168.0.185:81
curl http://10.168.0.185:82
curl http://10.168.0.185:83
----------------------------------------------------------
理論部分參閱資料:
1)官方:
http://www.nginx.org
2)Tengine:
http://tengine.taobao.org
實驗部分參閱資料:
1)Nginx官方下載下傳路徑:
http://nginx.org/en/download.html