问题描述:将前后端项目放在服务器,前端build之后,使用nginx部署前端,使用了nginx代理后端接口,并进行转发,在配置完nginx后发现,前端浏览器中调用接口显示status为200,但是返回的data为build后的index.html,实际上我需要的是调用接口得到的json数据。
项目开发时的技术栈:react+flask+Mysql+redis+nginx
解决方法:index.html显示You need to enable JavaScript to run this app.一开始我以为是浏览器禁用掉了js,经过检查发现不是此问题。在本地运行前后端没有任何问题,服务器上又只修改了nginx,那大概率就是nginx配置时的问题,事实上确实是nginx配置的问题,nginx配置中一开始我写了两个server,我将两个server放在一起之后,便解决了此问题。
server {
listen 80; //80修改成你自己监听的端口号
server_name baidu.com //baidu.com修改成你监听的域名;
// 以下为ssl证书配置
ssl_protocols TLSv1 TLSV1.1 TLSv1.2;
ssl_certificate /etc/nginx/private/cert.crt; //存放的路径为/etc/nginx/private
ssl_certificate_key /etc/nginx/private/key.key;
// 监听的接口
location / {
root /root/Project/build; // /root/Project/build替换为你的前端build之后的路径
index index.html;
try_files $uri $uri/ /index.html;
}
location /api { //api替换成你的后端接口,前端发送的请求要为https://www.baidu.com/api
proxy_pass http://127.0.0.1:5000/api; //在这填写转发的地址,调用后端的接口
// https://www,baidu.com/api将会转发到本机(服务器)的http://127.0.0.1:5000/api,需要提
// 前将后端运行,接口运行在127.0.0.1:5000。
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate";
add_header Content-Type "application/json";
}
}