nginx作为本地图片服务器及地址重写

引言

这两天写项目碰到了使用nginx作为图片服务器及简单的地址重写

Nginx作为图片服务器

 server {
	listen       80;
	server_name  image.leyou.com;

	proxy_set_header X-Forwarded-Host $host;
	proxy_set_header X-Forwarded-Server $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	
	location / {
		root D:\\apple\\images;
	}
    }

域名这里使用的是本机解析的DNS
配置方式:域名在本机系统盘/Windows/System32/dirvers/etc下的hosts修改,可以配置本地静态DNS服务
浏览器默认请求发送端口为80
server_name的域名请求的链接,文件资源路径在本地的路径下寻找

地址重写

  server {
		listen       80;
		server_name  api.leyou.com;

		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
		location /api/upload {
			proxy_pass http://127.0.0.1:8092;
			proxy_connect_timeout 600;
			proxy_read_timeout 600;

			rewrite "^/api/(.*)$" /$1 break;
		}

		location / {
			proxy_pass http://127.0.0.1:10010;
			proxy_connect_timeout 600;
			proxy_read_timeout 600;
		}

	    }

任何发往server_name域名的请求都会被下面两个location过滤
(重要)顺序:/api/upload/ ---> /
这里的顺序不能颠倒,先写全局的那么有限制的将不起作用

项目中后端接口链接为/upload/xxx,所以需要将/api过滤掉,同时将后面的转发至对应服务

rewrite [正则表达式] [真实链接替代位] [功能位]

(重要)代码中正则表达式指/api后面的所有部分(即 .*)被代指为$1,如果有多个(xxx)筛选条件,则$后面的数字还可以向后追加
$1 代指匹配正则中的(.*),即将/api后面的全部看作一个区块,区块名为$1,可以起到替代作用

break 是功能位中的一个

last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

异常

后端接口正常测试,前端URL争取,但前端请求无法到达,服务没有任何相应,一定要往跨域问题哪里找答案,这里涉及了跨域问题
参考:我的文章-> 深入浅出跨域问题

功能演示


posted @ 2020-11-17 17:39  lifelikeplay  阅读(1005)  评论(0编辑  收藏  举报