Nginx代理同域名前后端分离项目的完整步骤


Posted in Servers onMarch 31, 2021

前后端分离项目,前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。

以 vue + php 项目为例。直接上 server 模块的 nginx 配置。

server
 {
 listen 80;
 #listen [::]:80 default_server ipv6only=on;
 server_name demo.com; # 配置项目域名
 index index.html index.htm index.php;

 # 1.转给前端处理
 location /
 {
  # 前端打包后的静态目录
  alias /home/wwwroot/default/vue-demo/dist/;
 }

 # 2.转给后端处理
 location /api/ {
  try_files $uri $uri/ /index.php?$query_string;
 }

 # 3.最终php在这里转给fpm
 location ~ [^/]\.php(/|$)
 {
  # 后端项目目录
  root /home/wwwroot/default/demo/public/;
  #fastcgi_pass 127.0.0.1:9000;
  fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_index index.php;
  include fastcgi.conf;
  include pathinfo.conf;
 }

 # 4.处理后端的静态资源
 location /public/ {
  alias /home/wwwroot/default/demo/public/uploads/;
 }

 #error_page 404 /404.html;

 access_log /home/wwwlogs/access.log main;
}

简单解释

  • 当域名后存在 /api/ 前缀时,将转给后端处理;
  • 当域名后存在 /uploads/ 前缀时,访问后端的静态资源。
  • 由于 location 精准匹配的原则,除以上之外的访问都会被转到第一处 location 访问前端页面。

例如:

访问文章列表接口

GET https://demo.com/api/posts

访问上传的图片

GET https://demo.com/uploads/xxx.jpg

访问前端首页

GET https://demo.com/

访问文章页面

GET https://demo.com/posts

PS:alias 路径末尾一定要有 / 。

总结

到此这篇关于Nginx代理同域名前后端分离项目的文章就介绍到这了,更多相关Nginx代理同域名前后端分离项目内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
Nginx配置Https安全认证的实现
May 26 Servers
zabbix自定义监控nginx状态实现过程
Nov 01 Servers
Apache Hudi集成Spark SQL操作hide表
Mar 31 Servers
CentOS7安装GlusterFS集群以及相关配置
Apr 12 Servers
nginx配置之并发频次限制
Apr 18 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Windows server 2012 NTP时间同步的实现
Jun 25 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 Servers
Nginx+SpringBoot实现负载均衡的示例
win10安装配置nginx的过程
Filebeat 采集 Nginx 日志的方法
如何利用map实现Nginx允许多个域名跨域
Mar 31 #Servers
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 #Servers
Nginx的反向代理实例详解
nginx反向代理时如何保持长连接
Mar 31 #Servers
You might like
symfony表单与页面实现技巧
2015/01/26 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python实现统计单词出现的个数
2015/05/28 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Python自动创建Excel并获取内容
2020/09/16 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
单位委托书范本
2014/04/04 职场文书
实习评语大全
2014/04/26 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
判断Python中的Nonetype类型
2021/05/25 Python
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python