【Nginx學習05】nginx 聯合tomcat實現動靜分離

前言

Nginx動靜分離簡單來說就是把動態跟靜態請求分開,不能理解成只是單純的把動態頁面和靜態頁面物理分離。嚴格意義上說應該是動態請求跟靜態請求分開,可以理解成使用Nginx處理靜態頁面,Tomcat、Resin出來動態頁面。

動靜分離從目前實現角度來講大致分爲兩種:

一種是純粹的把靜態文件獨立成單獨的域名,放在獨立的服務器上,也是目前主流推崇的方案;這種的實現方案比較簡單,缺點就是需要額外的配置若干臺服務器。

另外一種方法就是動態跟靜態文件混合在一起發佈,通過nginx代碼來分開。這樣也是本次課程要講解的,具體怎麼來實現呢,下面會介紹到,通過location指定不同的後綴名實現不同的請求轉發。

通過expires參數設置,可以使瀏覽器緩存過期時間,減少與服務器之前的請求和流量。具體Expires定義:是給一個資源設定一個過期時間,也就是說無需去服務端驗證,直接通過瀏覽器自身確認是否過期即可,所以不會產生額外的流量。expires的設定時間需要我們根據自身的業務情況來具體設定。

此種方法非常適合不經常變動的資源。(如果經常更新的文件,不建議使用Expires來緩存),假如我們設置爲3d,表示在這3天之內訪問這個URL,發送一個請求,比對服務器該文件最後更新時間沒有變化,則不會從服務器抓取,返回狀態碼304,如果有修改,則直接從服務器重新下載,返回狀態碼200。


正文

本文默認是在配置好tomcat 和 nginx 的基礎之上的,具體配置方法參照其他博文。

1.配置好 nginx.conf文件

在http模塊模塊中加入如下代碼

	upstream mylocal{
		server 106.12.129.252:8080;
	}

mylocal爲反向代理羣的名字,一個local下面可以有很多的server

106.12.129.252:8080,爲我自己的服務器的地址,8080位我設定的tomcat的監聽端口

在server模塊模塊中加入如下代碼
server代碼中的其他代碼我們不列出,下面是爲了實現動靜分離而添加的新代碼。

location /
		{
			proxy_next_upstream http_502 http_504 error timeout invalid_header;
			proxy_set_header Host  $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass https://mylocal;
		}
		#動態部分,以php或者jsp結尾的
		location ~ .*\.(php|jsp|cgi|shtml)?$
		{
			proxy_set_header Host  $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass  https://mylocal;#跳轉到我們設置的反向代理部分,tomcat部分
		}
		
    #靜態資源部分
		location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
		{
			#靜態資源存放目錄,設定緩存時間爲3天
			root /usr/share/nginx/html/;
			expires      30d;
		}
	

配置靜態資源
我們在/usr/share/nginx/html/下添加靜態文件,如下:
在這裏插入圖片描述

重啓nginx服務器

nginx -s reload #reload方式是平滑的啓動nginx

在瀏覽器輸入域名驗證
在這裏插入圖片描述
此域名是我們106.12.129.252對應的域名,可知,已經成功的被反向代理到了tomcat的8080端口,實現了訪問動態資源跳轉到動態頁面。

在瀏覽器中訪問靜態資源,如下,我們訪問 index.html文件,出現如下界面
在這裏插入圖片描述

表明已經成功實現訪問靜態資源跳轉到靜態資源頁。


關於我自己

  • 一個正派但不正經的程序員

  • 18年計算機專業碩士畢業生,騰訊SNG部門實習生,現加盟快手科技 ,後端研發工程師一枚

  • 喜歡技術,喜歡互聯網

  • 民遙控 ,趙雷、陳粒、宋冬野

  • 公衆號:編程美學,時不時寫篇文章,偶爾數羊,其實說到底,只是想和你聊聊
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章