通过中间件将动态请求与静态请求分离,这样,当动态请求资源失败时,至少可以界面显示静态资源。
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;
- }
- }
-