Nginx之動靜分離
為什麽要動靜分離呢?
拿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之動靜分離