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

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

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的根资源.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,999评论 19 139
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,271评论 21 356
  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 8,584评论 1 41
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,804评论 24 1,002
  • 自昨日与他争吵,便是久久的惆怅。自知理亏,却也不知如何解释。想来也是狠狠地伤了他的心。纵然爱我入骨,又怎禁得住这般...
    玄鲤清阅读 238评论 0 0