美文网首页程序员
利用nginx将前端请求代理到本地服务器

利用nginx将前端请求代理到本地服务器

作者: 数齐 | 来源:发表于2017-01-19 15:51 被阅读1652次

    在日常开发过程中,方便的我们测试服务端的代码,我们可以将前端服务器的请求代理到本地。首先,我们抓一个前端访问的请求进行分析

    http://a.dev.b.com/c/api/d/e/f?pageNO=1&pageSize=10
    

    从这个请求中我们可以发现,我们需要代理的域名是:http://a.dev.b.com/ ,看一眼本地的代码

    @RequestMapping("/api/d/e")
    

    也就是说,/api/d/e/f 是服务器端可以识别的。c只是一个虚拟的路径,需要被nginx映射掉。好了,分析结束,开始搞起来了。首先配置本地的hosts文件。增加配置,将http://a.dev.b.com/ 映射到本地

    127.0.0.1  a.dev.b.com 
    

    随后配置nginx.conf文件,增加代理。

    
        server {
            listen       80;
            server_name  a.dev.b.com;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
            location /c {
                proxy_pass http://localhost:9999/;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header        X-Read-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }
    

    监听http://a.dev.b.com/的80端口,如果有请求过来,并且链接中带有c,就将此请求转发到本地的9999端口,这个对应的就是我们自己的服务。

    image2017-1-19 15-35-15.png

    然后前端服务器的请求就转发到了本地的服务器上,方便我们本地调试了。

    这里有一个小说明就是proxy_pass配置说明,proxy_pass转发的路径后是否带 “/”,是影响你正常跳转的一个方面。例如

    例1
    location /test/
    {
    proxy_pass http://test:8080;  
    }
    例2
    location /test/  
    {  
    proxy_pass http://test:8080/;  
     } 
    

    针对情况1,如果访问url = http://server/test/test.jsp,则被nginx代理后,请求路径会便问http://proxy_pass/test/test.jsp,将test/ 作为根路径,请求test/路径下的资源
    针对情况2,如果访问url = http://server/test/test.jsp,则被nginx代理后,请求路径会变为 http://proxy_pass/test.jsp,直接访问server的根资源.

    相关文章

      网友评论

        本文标题:利用nginx将前端请求代理到本地服务器

        本文链接:https://www.haomeiwen.com/subject/tvuibttx.html