添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

环境: centos 7.9 nginx1-8.0

nginx动静分离

有时候为了实现不同的资源访问不同的服务器,比如客户端访问的是图片,则 nginx 反向代理请求到后端的静态资源服务器,访问的是动态资源,则 nginx 反向代理请求到后端的动态资源服务器,这种根据客户请求的不同 nginx 代理到不同的节点服务器,我们称之为 nginx 实现资源的动静分离。

nginx根据url地址实现转发请求

为了实现资源的动静分离,我们可以部署动态资源服务器、静态资源服务器、上传资源服务器、默认服务器等,这样,当前端用户访问服务器时,我们可以根据用户传递过来的URL地址来匹配不同的 nginx 反向代理,从而让不同的资源解析到对应的节点服务器上。
如访问域名 www.dami.com ,然后用户访问 www.dami.com/upload/xxx 时, nginx 反向代理请求的是上传资源服务器;
用户访问 www.dami.com/move/xxx 时, nginx 反向代理请求的是动态资源服务器;
用户访问 www.dami.com/static/xxx 时, nginx 反向代理请求的是静态资源服务器;
用户访问 www.dami.com 时, nginx 反向代理请求的是默认服务器,如下实现:

location  /upload/ {
proxy_pass http://upload_pools;
include proxy.conf;
location  /move/ {
proxy_pass http://move_pools;
include proxy.conf;
location  /static/ {
proxy_pass http://static_pools;
include proxy.conf;
location  / {
proxy_pass http://default_pools;
include proxy.conf;

nginx根据user_agent设备类型实现转发请求

除了上面的根据URL实现不同的代理转发,nginx还可以根据用户设备的类型来实现不同的请求转发,如在企业中,为了让不同的客户端用户拥有更好的体验,需要在后端服务器架设不同的服务器,如移动端客户端访问的是移动网站服务器,PC客户端访问的是PC端服务器,在常规的4层负载均衡中解决这个问题是通过人为的给客户分配不同的域名,如移动端访问wap.dami.com ,pc端用户访问pc.dami.com,这样最大的问题就是需要用户记住不同的域名,为了解决这个问题,在7层负载均衡中,就不需要人为的拆分域名,只提供一个www.dami.com给用户即可,其原理是通过获取用户设备类型$http_user_agent来将请求转发到对应的服务器上,如下:

location / {
	if($http_user_agent ~* "MSTE")
		proxy_pass http://static_pools;
		include proxy.conf;
		if($http_user_agent ~* "chrome")
		proxy_pass http://upload_pools;
		include proxy.conf;
	proxy_pass http://default_pools;
	include proxy.conf;

注意:当无法知道客户端的设备类型时,可以先模拟访问,然后在访问日志里$http_user_agent记录就能看到设备类型了。

nginx根据文件扩展名 实现

根据文件扩展名来实现不同的请求转发,其实与前面讲的URL很类似,如下:

location  ~ .*. (gif|jpg|jpeg|png|bmp|swf|css|js)$ {
	proxy_pass http://static_pools;
	include proxy.conf;
#或者使用if语句
if($http_url ~* ".*\.(php|php5|php7)$")
proxy_pass http://php_pools;
	include proxy.conf;
if($http_url ~* ".*\.(jsp|jsp*|do|do*)$")
	proxy_pass http://java_pools;
	include proxy.conf;

7层负载均衡、4层负载均衡

根据URL进行实现代理转发应用的情况,我们称之为第7层(应用层)负载均衡,而LVS一般用于TCP等的转发,我们称之为第4层(传输层)负载均衡。

前言环境:centos 7.9 nginx1-8.0nginx根据url地址实现动静分离为了实现资源的动静分离,我们可以部署动态资源服务器、静态资源服务器、上传资源服务器、默认服务器等,这样,当前端用户访问服务器时,我们可以根据用户传递过来的URL地址来匹配不同的nginx反向代理,从而让不同的资源解析到对应的节点服务器上。如访问域名www.fujiseiko.com,然后用户访问www.fujiseiko.com/upload/xxx时,nginx反向代理请求的是上传资源服务器,用户访问www.