反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。
這里講得很直白。反向代理方式實際上就是一台負責轉發的代理服務器(Nginx),貌似充當了真正服務器的功能,但實際上並不是,代理服務器只是充當了轉發的作用,並且從真正的服務器(Tomcat)那里取得返回的數據。這樣說,其實nginx完成的就是這樣的工作。我們讓nginx監聽一個端口,譬如80端口,但實際上我們轉發給在8080端口的tomcat,由它來處理真正的請求,當請求完成后,tomcat返回,但數據此時沒直接返回,而是直接給nginx,由nginx進行返回,這里,我們會以為是nginx進行了處理,但實際上進行處理的是tomcat。
實際上,我們配置了Nginx反向代理后,系統的物理結構可能是下面這樣子的,當我們訪問一個域名/IP地址時,實際訪問的是我們配置的Nginx服務器,Nginx服務器的真實身份只是代理,它代理了許多不同的真正服務器(如下圖中的Tomcat,Resin,IIS等)。
雖然配置反向代理比較麻煩,但是它的作用性還是很大滴。一方面是為了安全性考慮,另一方面是提供應用的訪問性能。說到上面的方式,也許很多人又會想起來,這樣可以把靜態文件交由nginx來進行處理。對,很多用到nginx的地方都是作為靜態伺服器,這樣可以方便緩存那些靜態文件,比如CSS,JS,html,htm等文件。
接下來配置Ngin的反向代理Tomcat。
1. 前期准備
nginx 安裝成功
tomcat 安裝成功
2. 更改nginx的配置文件
更改nginx.conf文件,在http/server/location層次結構下,添加proxy_pass http://localhost:7080; 一句話即可。注意不要放了;結尾。
3. 重啟nginx,在瀏覽器中輸入nginx的訪問地址,顯示的就是Tomcat的訪問地址。
4. 現在雖然nginx反向代理成功了,但是為了更好的發揮nginx的性能。我們將Tomcat的js、html、圖片等靜態文件配置到nginx上進行緩存,這樣就可以提高應用的訪問效率了。
5. 刪除 location / 節點,避免全部請求被攔截。新增 location ~ \.jsp$ 節點和 location ~ \.(html|js|css|png|gif|jpg)$ 節點,如下圖。
6. 訪問http://10.0.6.108:7788,返回nginx 404。這是因為匹配的location,應用自動跳轉到nginx的404.
訪問http://10.0.6.108:7788/index.jsp,返回到tomcat頁面。因為jsp會自動匹配配置的location。
訪問http://10.0.6.108:7788/tomcat.png,也能正確顯示tomcat的logo。說明nginx配置的靜態文件location是生效的。
至此,Nginx配置反向代理Tomcat完成。
參考文章:
http://www.360doc.com/myindex.aspx
http://www.linuxidc.com/Linux/2015-03/115208.htm