通过中间件将动态请求与静态请求分离,这样,当动态请求资源失败时,至少可以界面显示静态资源。
Nginx的静态处理能力很强,但动态处理能力不足,企业常采取动静分级技术; 在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式 。
静态请求资源不需要经过后台服务处理,可直接由中间件返回,只有动态请求才会经过后台。
样例:
修改nginx配置文件nginx.conf:
#增加upstream模块
upstream tomcat_server {
server 192.168.0.25:8080;
}
upstream static_server {
server 192.168.0.102;
}
#修改默认server的中配置
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html;
}
#匹配到http://ip/*.jpg或者*.png或者*.css时,交由静态资源服务器192.168.0.102处理
location ~ .*\.(jpg|png|css) {
proxy_pass http://static_server;
proxy_set_header X-Real-IP $remote_addr;
}
#匹配到http://ip/*.jsp时,交由后台tomcat192.168.0.25处理动态资源
location ~ .*\.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header X-Real-IP $remote_addr; #传递真实IP地址
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}