Nginx基础使用转发前后端配置

实现前后端分离,可以让前后端独立开发、独立部署、独立单测,双方通过JSON进行数据交互。

  对于前端开发人员来说,不用每次调试都需要启动或配置Java/Tomcat运行环境;对于后端开发人员来说 ,也不用在需要往JSP页面注入数据。

  通过nginx来部署前端代码,可以帮助前端实现以下基本需求:

1、请求转发,解决请求跨域的问题

 

server {
        listen      7777;
        location /{
            root  /Users/xiaoyun/git/someproject/dist;
        }

        location /api/v1{
              proxy_set_header Host api.yourhost.com;
              proxy_pass http://api.yourhost.com/api/v1/;
        }

        location /api/v2{
                proxy_pass  http://api.yourhost.com/new;
        }
    }

 

  以上是一段nginx配置参考:

  listen    nginx服务端口号

  location  /    设置默认根目录所访问的本地代码路径,这里还可以设置默认主页index

  proxy_pass  请求转发,可以配置多个,从上至下进行匹配

  以第一个配置为例,即所有本地以/api/v1开头的请求都会转发至对应线上服务器,例如: http://localhost:7777/api/v1/getConfig 则会自动转发到:http://api.yourhost.com/api/v1/getConfig

  另外,还需要注意的是,proxy_pass配置的路径如果是以/结尾,如上面的配置v1,那么此时路径为相对路径,否则为绝对路径

  例如 v2的转发配置:如果请求 http://localhost:7777/api/v2/user/list  则会转发自 http://api.yourhost.com/new/user/list ,不会带有原路径的 /api/v2

2、gzip请求压缩

  网站开启gzip压缩,不仅能够节省带宽,也能够快速响应用户的访问

 

http{
    gzip  on;
    gzip_proxied any;
    gzip_min_length  1024;
    gzip_buffers    4 8k;
    gzip_comp_level 3;
    gzip_types      text/plain text/css application/x-javascript application/javascript application/xml application/json;
}

 

  以下为各项配置作用:

  gzip on;      (启用 gzip 压缩功能)

  gzip_proxied any;  (nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩)

  gzip_min_length  1024; (最小压缩的页面,如果页面过于小,可能会越压越大,这里规定大于1K的页面才启用压缩)

  gzip_buffers    4 8k; (设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流)

  gzip_comp_level 3; (压缩级别,1压缩比最小处理速度最快,9压缩比最大但处理最慢,同时也最消耗CPU,一般设置为3就可以了)

  gzip_types      text/plain text/css application/x-javascript application/javascript application/xml application/json; (什么类型的页面或文档启用压缩)

 

第二部分

 

Nginx配置两个地方就行:
先是配置好自己项目的服务,确保自己的项目能运行:

        location / {
            root    /web/xiangmu/public;  // 本地项目的路径
            index index.html index.php;
        }

再是配置接口请求后端:

     location /api/ {
            proxy_pass http:// 192.168.1.1;(后端接口地址,端口号也要注意哦,不是80的记得加上端口号)
            proxy_set_header: Host $host;
        }

注意点(后端接口配置):

  ####    如果你的配置出现404了,这个时候你可以对照检查下面的问题是不是你遇到的。
 1、proxy_pass  地址后面要不要加/取决于匹配的 /api/ 作不作为你uri的一部分,如果 /api/ 是其中一部分,则不需要带上 / ; 反之带上。加了 / 相当于是绝对根路径,nginx 不会把location 中匹配的路径 /api/ 带上。
       如果你的配置跟上面一样,同时请求a.html页面:
       请求地址应该要是这样的: http:// 192.168.1.1/api/a.html;
       如果配置是这样:proxy_pass http:// 192.168.1.1/;(后端接口地址),请求接口地址应该是这样: http:// 192.168.1.1/a.html。

 2、proxy_pass的地址记得在hosts文件做ip映射,建议直接使用域名对应的ip地址。

 3、location 中 ~ (区分大小写)与 ~* (不区分大小写)标识均为正则匹配。如果你不确定,请在location后面加上 location ~* /api/ { }这样的配置 不区分 api三个字母的大小写。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值