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常用命令放入shell脚本详解
Mar 31 Servers
Nginx解决前端访问资源跨域问题的方法详解
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
配置Kubernetes外网访问集群
Mar 31 Servers
Nginx虚拟主机的配置步骤过程全解
Mar 31 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
nginx七层负载均衡配置详解
Jul 15 Servers
Win10系统搭建ftp文件服务器详细教程
Aug 05 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
Nginx+SpringBoot实现负载均衡的示例
win10安装配置nginx的过程
Filebeat 采集 Nginx 日志的方法
如何利用map实现Nginx允许多个域名跨域
Mar 31 #Servers
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 #Servers
Nginx的反向代理实例详解
nginx反向代理时如何保持长连接
Mar 31 #Servers
You might like
php 特殊字符处理函数
2008/09/05 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
Python request post上传文件常见要点
2020/11/20 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
调解员先进事迹材料
2014/02/07 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
军训通讯稿范文
2015/07/18 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
Django REST framework 限流功能的使用
2021/06/24 Python
关于Python使用turtle库画任意图的问题
2022/04/01 Python