• 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争取,但前端请求无法到达,服务没有任何相应,一定要往跨域问题哪里找答案,这里涉及了跨域问题
    参考:我的文章-> 深入浅出跨域问题

    功能演示


  • 相关阅读:
    Android 在Java代码中设置style属性使用代码创建ProgressBar对象
    编写高效的Android代码(提高运行速度,节省电量)
    Android动态加载——加载已安装APK中的类
    使用NDK移植开源项目,JNI的使用技巧
    [随便写写]Android基础教程
    Android 通过按键旋转屏幕
    struts2中获取request、response,与android客户端进行交互
    Oracle配置监听和连接,已经一些比较容易混淆的相关概念
    Oracle Profile 使用详解
    VS.NET(VC++风格)常用快捷键 && UltraEdit常用快捷键
  • 原文地址:https://www.cnblogs.com/lifelikeplay/p/13995430.html
Copyright © 2020-2023  润新知