环境: centos 7.9 nginx1-8.0
centos 7.9 nginx1-8.0
有时候为了实现不同的资源访问不同的服务器,比如客户端访问的是图片,则 nginx 反向代理请求到后端的静态资源服务器,访问的是动态资源,则 nginx 反向代理请求到后端的动态资源服务器,这种根据客户请求的不同 nginx 代理到不同的节点服务器,我们称之为 nginx 实现资源的动静分离。
nginx
为了实现资源的动静分离,我们可以部署动态资源服务器、静态资源服务器、上传资源服务器、默认服务器等,这样,当前端用户访问服务器时,我们可以根据用户传递过来的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 反向代理请求的是默认服务器,如下实现:
www.dami.com
www.dami.com/upload/xxx
www.dami.com/move/xxx
www.dami.com/static/xxx
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.
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.
除了上面的根据URL实现不同的代理转发,nginx还可以根据用户设备的类型来实现不同的请求转发,如在企业中,为了让不同的客户端用户拥有更好的体验,需要在后端服务器架设不同的服务器,如移动端客户端访问的是移动网站服务器,PC客户端访问的是PC端服务器,在常规的4层负载均衡中解决这个问题是通过人为的给客户分配不同的域名,如移动端访问wap.dami.com ,pc端用户访问pc.dami.com,这样最大的问题就是需要用户记住不同的域名,为了解决这个问题,在7层负载均衡中,就不需要人为的拆分域名,只提供一个www.dami.com给用户即可,其原理是通过获取用户设备类型$http_user_agent来将请求转发到对应的服务器上,如下:
URL
wap.dami.com
pc.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.
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记录就能看到设备类型了。
注意:当无法知道客户端的设备类型时,可以先模拟访问,然后在访问日志里$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.
根据文件扩展名来实现不同的请求转发,其实与前面讲的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.
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.
根据URL进行实现代理转发应用的情况,我们称之为第7层(应用层)负载均衡,而LVS一般用于TCP等的转发,我们称之为第4层(传输层)负载均衡。