Nginx學習筆記——場景實踐之《動靜分離》
阿新 • • 發佈:2019-01-08
動靜分離
通過中介軟體將動態請求和靜態請求分離。
優勢
分離資源,減少不必要的請求消耗,減少請求延時。
請求流程圖
場景
以Tomcat為例,Tomcat處理jsp動態請求,而Nginx直接處理靜態資源。
場景演示
Nginx與Tomcat配合,演示動靜分離的場景,以Nginx為中介軟體,動態請求訪問Tomcat,靜態資源直接從中介軟體返回給客戶端進行顯示。
(1)首先在Tomcat/webapps/ROOT
下放置一個產生隨機數的JSP檔案,作為動態資源。
java_test.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
< HTML>
<HEAD>
<TITLE>JSP Test Page</TITLE>
</HEAD>
<BODY>
<%
Random rand = new Random();
out.println("<h1>Random number:</h1>");
out.println(rand.nextInt(99)+100);
%>
</BODY>
</HTML>
(2)配置Nginx,在/etc/nginx/conf.d/
下配置Nginx。
test_mysite.conf
upstream myServers{ server 192.168.174.132:8080; } server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/log/host.access.log main; root /opt/app/code; location ~ \.jsp$ { proxy_pass http://myServers; index index.html index.htm; } location ~ \.(jpg|png|gif)$ { #快取 expires 1h; #壓縮 gzip on; } location /{ index index.html index.htm; } }
其中:
(1)upstream配置在http層,注意!upstream的名字中不要帶下劃線_
,使用駝峰命名,會造成Http解析出錯(或者加上proxy_set_header host $http_host)。
(2)root配置在server層,則下面的location都會適用,免去了重複配置。