1. 程式人生 > >** 反向代理伺服器_Nginx [web基礎day26] *

** 反向代理伺服器_Nginx [web基礎day26] *

Nginx

阿里雲伺服器

1.ip地址
	* 電腦的ip地址連線不同的網路ip地址是不斷變化的
	* 阿里雲伺服器給的公網ip地址是不變的。
	* 阿里雲中使用的是公網ip地址,內的ip地址是區域網的地址。
	* 公網的ip地址不容易記住,可以指定一個域名繫結ip。
2.遠端工具
	* Xshell6  可以遠端控制伺服器
	* FileZila	可以遠端傳輸到伺服器軟體
3.其他操作
	* 虛擬機器作業系統:CentOs
	* 購買域名 繫結域名 通過域名連線伺服器
	* 釋出的過程中會有很多問題,如
		* tomcat安全問題(需要刪除重新放入檔案)
		* redies需要安裝
		* 版本不相容
		* 等

代理伺服器

* 檢視伺服器:
	* 首先輸入網址後,會先在hosts中查詢是否有對應的ip地址,如果有的話直接返回,如果沒有,再從公網上進行查詢解析。
	* hosts路徑:C:/Windows/System32/drivers/etc/hosts
	* 系統許可權不足的同學,可以使用此程式碼解決hosts修改不生效的問題:
		* ipconfig /flushdns
* 網站(域名)--> 找到對應ip地址對應的web伺服器 -->找到web伺服器的資源。
* .com  .cn    頂級域名  這種域名比較貴
* 解析設計: 主機記錄與記錄值進行匹配

Nginx

1.概述 
	* Nginx,它是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。是由俄羅斯訪問量第二的Rambler.ru站點開發的,釋出於2004年10月4日。
2.優點:
	* 穩定
	* 功能集豐富
	* 示例配置檔案
	* 低系統資源的消耗
3.代理問題
	* 正向代理:
		* 如果想上網,可以通過一個代理伺服器連上網路,這樣就會經過一個代理伺服器,這種就屬於正向代理。			(機器找網路)
	* 反向代理
		* 網路上有一個請求過來,但是現在有很多伺服器,它不知道找哪個伺服器。這時候就有一個代理伺服器,它會攔截請求並分析,告訴請求找哪個伺服器,這就稱之為反向代理。			(網路找機器)
	
	* 使用反向代理軟體可以解決伺服器叢集問題。

4.windows中部署Nginx和tomcat叢集:
	1. 安裝步驟:
		* 複製出兩個tomcat出來,分別命名為tomcat1和tomcat2
		* 修改tomcat埠,修改其中一個tomcat的Servlet.xml檔案(防止埠衝突):
			* Server port " xxx"
			* Connnector prot(啟動埠)=" xxx" Protocol="HTTP"
			* Connector prot " xxx"  Protocol="AJP/"
		* 將兩個一樣的專案分別都發布到兩個tomcat的專案中 (將專案打包為war包分別放入兩個tomcat中的webapps裡)
	2. Nginx:
		* 它們不可能有兩個不同的地址,所以需要安裝一個Nginx,設定一個統一的入口。
		* 步驟:
			1.雙擊nginux.exe       如果想看一下是否成功執行和結束,可以點開工作管理員即可檢視。
			2.nginux的埠是80,預設省略,直接輸入localhost即可進入Nginx的歡迎介面(http://locathost)
	3. 配置Nginx:
		1. 進入Nginx檔案中,修改nginx/conf/nginx.conf檔案:
			* 建立一個集合:  //設定伺服器列表
				* upstream server_lb{
				* server localhost:8080;
				* server localhost:8081;
				* }
			*在server中新增程式碼:
				* server{	//如果有域名直接設定域名,如果沒有可以直接設定proxy pass即可
				* listen 80;
				* server_name localhost;
				* location / {
				*     root html;
				*     proxy pss http://server lb;		//代理
				*	  index index.jsp index.html index.htm;
				* }  }
		2.做到這一步,就可以使tomcat的叢集搭建完成了。

	4. Session的共享問題
		* 解決方案:
			1. 一種解決辦法:一個使用者進來以後只在tomcat1上進行操作,另一個使用者進行只在tomcat2上進行;
				* 修改nginx/conf/nginx.conf檔案,在upstream server_lb{}中末尾新增程式碼:ip_hash;
				* 設定權重 如:
					* server localhost:8080 wight=4;
					* server localhost:8081 wight=10;
					* //這個修改也是在server_lb中修改程式碼。
			2. 廣播機制:
				* 概念:一種使用tomcat廣播機制完成session的共享(不推薦的方式)
				*  缺點:當叢集中tomcat很多的時候,它們之間需要相互聯絡,需要知道彼此的關係和位置,會導致效率下降。
				* 配置:看下方尾部。
			3. redis快取機制(工作中常用):
				* 概念:可以使用redis進行快取,將它們中的共享資料都儲存到redis伺服器中。取的時候都從redis取出資料。

			4. 使用1方法可以讓不同的tomcat來分擔伺服器的壓力,請求負載過程中會話資訊不能丟失,那麼需要在多個tomcat中session需要共享。
				* 配置tomcat的session共享可以有三種解決方案:
					1. 第一種是以負載均衡伺服器本身的session共享策略,沒中伺服器的配置是不一樣的並且nginx本身是沒有的。
					2. 第二種是利用web容器本身的session共享策略來配置共享。針對於weblogic這種方式還是靠譜的。但是針對於tomcat這種方式存在很大的缺陷,主要因為是依靠廣播方式來實現的session賦值,會浪費很多頻寬導致整個網路反應緩慢。官網也建議這種方式最好不要超過4臺tomcat,具體的內容可參考/webapps/docs/cluster-howto.html裡面有詳細的說明。
					3. 第三種是tomcat叢集+redis的Session共享配置方法。
			5. 廣播機制的seesion共享搭建方法:
				1. 步驟一:修改server.xml檔案,最簡單的叢集配置只需要將節點中註釋掉的下面這句取消註釋即可:
					* XML程式碼:
						* <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  
				2. 步驟二:修改專案的web.xml檔案:
					* web.xml檔案的修改很簡單:只需要在節點中新增這個節點<distributable/>就可以了。
					OK,有了這二步就實現了Tomcat的叢集和Session的共享了。	

安全網站:
* www.freebuf.com 技術,科普性內容
* www.exploit-db.com 英文