1. 程式人生 > >Nginx之動靜分離

Nginx之動靜分離

head color pre 技術分享 配置文件 cati ctype 教程 tran

為什麽要動靜分離呢?

拿Nginx來說,Nginx是Web服務器,僅僅只能處理靜態資源(例如js,img,css等等),而Tomcat屬於應用服務器既能處理靜態資源又能處理動態資源(例如jsp,freemarker,volocity等等)。但是Nginx處理靜態資源的效率要高於Tomcat,而Tomcat處理靜態資源的效率要低於Nginx很多,術業有專攻是也。由此,我相信大家明白了為什麽要動靜分離了。

如果還有不明白的,簡單的說,web開發的本質就是HTTP請求,將成千上萬的請求歸類進行分發,誰誰處理這個,誰誰處理那個,取其優勢,應用之。這樣,毋庸置疑,效率肯定會上去的。

另外說下常用的應用服務器和web服務器?

常用的web服務器:Nginx、Apache等等。

常用的應用服務器:Tomcat、Jboss、Resin、WebLogic等等。

其實Apache也可以做動靜分離,只不過我認為Nginx更簡單。

關於Nginx的安裝可以參考菜鳥教程:http://www.runoob.com/linux/nginx-install-setup.html

關於Nginx的學習和各個模塊的含義可以參考這個網址:http://www.nginx.cn/doc/

關於負載均衡和集群均可以參考我的這兩篇文章:

nginx反向代理和tomcat集群(適用於ubutnu16.04及其centos7)

nginx做負載均衡和tomcat簡單集群

1.動靜分離架構圖

技術分享圖片

2.Nginx配置

主要修改nginx.conf配置文件

 upstream  yctech{
         server   192.168.126.128:8080;
    }


    server {
        listen       80;
        server_name  yctech;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
         root  /test;
        location / {
           proxy_pass http://yctech
; root html; index index.html index.htm; } location ~ ^/yctech1/(.*){ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://yctech; #轉向tomcat處理 } location ~ ^/yctech2/(.*){ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://yctech; #轉向tomcat處理 } location ~ ^/yctech3/(.*){ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://yctech; #轉向tomcat處理 } location ~ ^/yctech4/(.*){ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://yctech; #轉向tomcat處理 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { expires 30d; }

root 對應的html是nginx的一個目錄,這個目錄下通常是官網的主頁。

像root /test;

是因為html下有test目錄,而test目錄主要放置靜態資源,同時也是處理靜態資源。

技術分享圖片

3.編寫index.jsp頁面測試

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<img src="logo_small.png" width="500px" height="500px"/>
</body>
</html>

jsp頁面中的logo_small.png其實是放在test目錄下的。

4.重啟Nginx

./sbin/nginx -s reload 並在瀏覽器上輸入對應的地址,即可看到對應的效果。

參考思路博文為:https://www.cnblogs.com/xiaoblog/p/4241086.html

Nginx之動靜分離