动静分离架构

1. 动静分离架构图

在这里插入图片描述

2. Nginx配置文件

该配置文件可以配置多个域名同一个ip,也就是说二级域名相同,一级域名不同

#user  nobody;  
worker_processes  1;  
  
#error_log  logs/error.log;  
#error_log  logs/error.log  notice;  
#error_log  logs/error.log  info;  
  
#pid        logs/nginx.pid;  
  
  
events {  
    worker_connections  1024;  
}  
  
  
http {  
    include       mime.types;  
	default_type  application/octet-stream;  
	fastcgi_intercept_errors on;  
	charset  utf-8;  
	server_names_hash_bucket_size 128;  
	client_header_buffer_size 4k;  
	large_client_header_buffers 4 32k;  
	client_max_body_size 300m;  
	sendfile on;  
	tcp_nopush     on;  
  
	keepalive_timeout 60;  
  
	tcp_nodelay on;  
	client_body_buffer_size  512k;  
  
	proxy_connect_timeout    5;  
	proxy_read_timeout       60;  
	proxy_send_timeout       5;  
	proxy_buffer_size        16k;  
	proxy_buffers            4 64k;  
	proxy_busy_buffers_size 128k;  
	proxy_temp_file_write_size 128k;  
  
	gzip on;  
	gzip_min_length  1k;  
	gzip_buffers     4 16k;  
	gzip_http_version 1.1;  
	gzip_comp_level 2;  
	gzip_types       text/plain application/x-javascript text/css application/xml;  
	gzip_vary on;  
  
  
	###2012-12-19 change nginx logs  
	log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '  
							  '$status $body_bytes_sent "$http_referer" '  
							  '"$http_user_agent"  $request_time $remote_addr';  
	  
	# 多个域名同一ip才可以生效,也就是说xxx.domain.com 二级域名.domain.com必须相同  
	upstream a.domain.com {  
		 server 127.0.0.1:8091 weight=1 max_fails=2 fail_timeout=30s;  
	}  
	  
	upstream c.domain.com{  
		 server 61.135.169.125:80 weight=1 max_fails=2 fail_timeout=30s;  
	}  
	  
  
	# 用户通过不同的域名,访问同一个nginx,实现不同ip的代理。  
	# a.domain.com 和 c.domain.com的域名解析地址是相同的,但内部代理到不同的ip处理  
	# 通过nginx的$host变量和upstream的方式  
	server {  
		listen 80;  
		index index.jsp index.html index.htm;  
		  
		#listen 443 ssl;  
		#ssl on;  
		#ssl_certificate cert/cert.pem;  
		#ssl_certificate_key cert/cert.key;  
		#ssl_session_timeout 5m;  
		  
		# 其中proxy_pass http://$host;是关键代码,通过变量$host的方式匹配到  
		# 对应域名的upstream名,当访问不同的域名后,upstream a.domain.com和  
		# upstream c.domain.com将会负载均衡到对应的ip  
		location / {  
				proxy_next_upstream http_502 http_504 error timeout invalid_header;  
				proxy_set_header Host  $host;  
				proxy_set_header X-Real-IP $remote_addr;  
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
				proxy_pass http://$host;  
				proxy_redirect http:// $scheme://;  
		}  
		#配置静态资源交给nginx处理  
		location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {  
		    root F:/static/loginAndRegister/; #静态文件目录  
		    expires 30d; #缓存天数  
		}  
	}  
	  
	#=================================本地域名映射====================================  
	upstream guangyang.easy.echosite.cn {  
		server guangyang.easy.echosite.cn:80;  
	}  
	  
	server {  
		listen 80;  
		server_name 16webtest.ngrok.xiaomiqiu.cn;  
		index index.jsp index.html index.htm;  
	      
		location / {  
			# http://域名不能跟server_name相同  
			proxy_pass http://guangyang.easy.echosite.cn;  
		}  
  
	}  
	  
  
}  

3. 静态资源如何被访问

  当我们在浏览器中输入a.domain.com/test,会先请求动态资源,请求被转发到后端服务器上的控制层,在本实例项目中,采用的是springboot,返回的模板中,包含静态资源路径,静态资源请求的url = 浏览器中输入的a.domain.com + 模板中的静态资源路劲,因此静态资源并不会直接请求tomcat,而是被nginx拦截,直接访问指定的静态资源路径。


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sgy_yuebin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值