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 相关文章推荐
Nginx配置SSL证书出错解决方案
Mar 31 Servers
Nginx Rewrite使用场景及配置方法解析
Apr 01 Servers
Kubernetes关键组件与结构组成介绍
Mar 31 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
nginx location 带斜杠【 / 】与不带的区别
Apr 13 Servers
使用 Docker Compose 构建复杂的多容器App
Apr 30 Servers
鲲鹏 CentOS 7 安装Python3.7
May 11 Servers
nginx之queue的具体使用
Jun 28 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
ubuntu如何搭建vsftpd服务器
Dec 24 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 Servers
Shell中的单中括号和双中括号的用法详解
Dec 24 Servers
Nginx+SpringBoot实现负载均衡的示例
win10安装配置nginx的过程
Filebeat 采集 Nginx 日志的方法
如何利用map实现Nginx允许多个域名跨域
Mar 31 #Servers
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 #Servers
Nginx的反向代理实例详解
nginx反向代理时如何保持长连接
Mar 31 #Servers
You might like
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php统计数组元素个数的方法
2015/07/02 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
深入理解vue Render函数
2017/07/19 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
python获取本地计算机名字的方法
2015/04/29 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
关于美容院的活动方案
2014/08/14 职场文书
python字符串常规操作大全
2021/05/02 Python
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python