欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx 前后端分离配置

程序员文章站 2024-03-21 20:59:40
...

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器

在前后端分离框架设计中,Nginx是一个不错的选择,因为其既可以作为前端HTTP访问器,也可以通过简单配置实现负载,同时也可以通过反向代理配置解决前后端分离的JavaScript跨域问题。

配置Nginx作为前端HTTP访问器,前端页面(*.html)放到html目录下(如果想新增一个访问上下文跟,只需要在此目录下新建一个子目录,比如:html),页面所需要的css、images、js我们放在resources目录下,修改nginx.conf

    server {
        listen       localhost:9999;
        server_name  discovery;
        root /html/html;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  default.html;
        }   

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|ico|woff)$
        {
           root d:/nginx-1.13.6/resources;
           access_log  on;
        }

}

默认页default是我们的登陆页,我们都知道前后端分离必须要面对的是JavaScript的跨域问题,我们为了正确获取到访问后续页面的所必须的token,我们通过nginx的反向代理配置,将前端页面请求转发到后端处理,比如:‘/discovery/login

function login() {
        var login = false;
        $.ajax({
            url: '/discovery/login',
            data: "username=" + $("#username").val() + "&password=" + $("#password").val(),
            type: 'POST',
            contentType: 'application/x-www-form-urlencoded',
            async: false,
            success: function (d) {
                var token = d.data;
                if (token != undefined && token != '') {
                    if(token=="-1"){
                        alert("认证异常");
                        login =false;
                    }else {
                        $.cookie("username", $("#username").val());
                        $.cookie("Authorization", token); 
                        window.location.href = 'index.html';
                        login = true;
                    }
                } else {
                    alert("用户名或密码错误!");
                    login = false;
                }
            }
        });
        return login;
    }

这里是反向代理的相关配置

location ~ /discovery {
     proxy_pass http://ip:port;
}

简化处理,匹配所有的/discovery/**请求。

后端使用SpringBoot微服务框架,在SpringBoot框架下也可以使用FreeMarker整合开发Web应用。