上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路。这篇实践一下其中的访问静态资源与访问动态资源的操作。
静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。
如:图片,字体,js文件,css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。
动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。
如:请求明天的天气信息数据,请求查看账户余额。
Tomcat应用服务器是用来处理Servlet容器和JSP的,虽然它也可以处理HTML等等一系列静态资源,但是效率不如Nginx;而且对Servlet容器和JSP的运算已经有很大压力了,如果不分离会导致大量的性能浪费。说到底,在应用服务方面,要遵循一条原则,一个服务只做一件事。要做动态请求就专做动态请求,要做静态请求就专做静态请求,这样才能提高性能。
我们要做的,就是当用户访问静态资源时,让Nginx将静态资源返回给用户;当用户访问动态资源时,将访问转到Tomcat应用服务器上,Tomcat将数据返回给Nginx, Nginx再返回给用户。
在这里,对于Nginx的配置文件内的各项参数说明不多讲解,如需了解Nginx配置文件移步这里。
不知道配置文件位置的,一条指令:
sudo找到/- name nginx.conf
要善于利用Linux指令,这样就会无法自拔的爱上Linux;
先来一个全部配置:
#用户www www; 用户根的根; worker_processes 2;#设置值和CPU核心数一致 error_log/home/zuoyu/ServerComputer/nginx/logs/nginx_error。日志致命一击;#日志位置和日志级别 pid/home/zuoyu/ServerComputer/nginx/nginx.pid; worker_rlimit_nofile 65535; 事件{ #使用epoll模型提高性能 使用epoll; #单个进程最大连接数 worker_connections 65535; } http { #扩展名与文件类型映射表 包括mime.types; #默认类型 default_type应用程序/八进制; log_format主要remote_addr - remote_user美元($ time_local]“请求”美元 ”地位body_bytes_sent美元美元http_referer” “http_user_agent美元”“http_x_forwarded_for美元”; client_header_buffer_size 32 k; large_client_header_buffers 4 32 k; client_max_body_size 8米; types_hash_max_size 2048; types_hash_bucket_size 128; sendfile> ~ . * \位置。(gif | jpg | jpeg | png | bmp | swf | ico | svg)美元 { 根/home/zuoyu/Public/NginxStaticSource/静态; }
当你访问虚拟主机地点:80时,当访问到以上述文件类型时,会去根/home/zuoyu/Public/NginxStaticSource/静态/目录下查找,比如你要访问根/home/zuoyu/Public/NginxStaticSource/静态/img/background.png这个图片,那么你只需要位置:80/img/background.png即可访问到该文件;
在我的配置中,又建立了一个主机,专门用来配置静态资源路径,这样就避免了换一次静态资源的目录要改好多个地方,只需修改主机路径就可以实现。便可以将上述图片配置修改为
~ . * \位置。(gif | jpg | jpeg | png | bmp | swf | ico | svg)美元 { proxy_pass http://localhost: 81; }
这样便大大提高了灵活性,而且在负载均衡时更加容易实现。注意:必须将静态资源主机配置放在核心主机的上面才有效。
<强>动态数据配置强>
我们就以访问JSP页面,做请求,动作请求为例子
~ . * \位置。(jsp | |行动)美元 { 指数index . jsp。 proxy_pass http://localhost: 8080; }
这个配置告诉了Nginx服务器:当有以jsp、做,行动为后缀的请求,就将该请求交给localhost: 8080;这个主机处理,这个主机的主页是index . jsp,这个就叫反向代理。这里设计到一个概念——代理与反向代理;代理通常需要在客户端配置,将本来要发送的请求转发到代理服务器;而反向代理要配置在服务器上,将本来要发送到本服务器上的请求转发到代理服务器上。
将所有需要Tomcat应用服务器处理的请求都交给Tomcat,剩下的让Nginx处理就好了,如果需要其他服务器的,再配置上就好了。