配置:
主域名 www.demo.xyz
二级子域名 api.demo.xyz

  • 列表项目其中api.demo.xyz加入了版本控制,使用的是URL路由传入方式

    在route.php路由文件中配置,如下

  1. return [
  2. // api版本路由
  3. ':version/:controller' => ':version.:controller',// 省略方法名时
  4. ':version/:controller/:function' => ':version.:controller/:function'// 有方法名时
  5. ];

  1. //同时控制器里加入版本号
  2. namespace app\api\controller\v1;
  3. class User
  4. {
  5. public function login()
  6. {
  7. $data = ['name'=>'Paul','age'=>19];
  8. return json($data);
  9. }
  10. }

  1. //这个例子最终的url显示为http://api.demo.xyz/v1/user
  2. Route::get(':version/user', 'api/:version.user/login');
  • 项目最终目录结构为

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181219173558307.png)

  • nginx配置

  1. # 主域名配置
  2. server {
  3. listen 80;
  4. server_name demo.xyz www.demo.xyz;
  5. root /www/www.demo.xyz/dist;
  6. #charset koi8-r;
  7. #access_log logs/host.access.log main;
  8. location / {
  9. index index.html index.htm index.php;
  10. }
  11. # 此处可作反向代理
  12. #location /v1 {
  13. # proxy_pass http://api.demo.xyz;
  14. #}
  15. #error_page 404 /404.html;
  16. # redirect server error pages to the static page /50x.html
  17. #
  18. error_page 500 502 503 504 /50x.html;
  19. location = /50x.html {
  20. root html;
  21. }
  22. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  23. #
  24. #location ~ \.php$ {
  25. # proxy_pass http://127.0.0.1;
  26. #}
  27. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  28. #
  29. location ~ \.php$ {
  30. root /www/www.demo.xyz;
  31. fastcgi_pass 127.0.0.1:9000;
  32. fastcgi_index index.php;
  33. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  34. include fastcgi_params;
  35. }
  36. # deny access to .htaccess files, if Apache's document root
  37. # concurs with nginx's one
  38. #
  39. #location ~ /\.ht {
  40. # deny all;
  41. #}
  42. }

  1. # 二级接口子域名配置
  2. server {
  3. listen 80;
  4. server_name api.demo.xyz;
  5. root /www/api.demo.xyz/public;
  6. #charset koi8-r;
  7. 配置cors解决跨域问题
  8. add_header Access-Control-Allow-Origin *;
  9. add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
  10. add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
  11. if ($request_method = 'OPTIONS') {
  12. return 204;
  13. }
  14. #access_log logs/host.access.log main;
  15. location / {
  16. index index.html index.php;
  17. if (!-e $request_filename) {
  18. rewrite ^(.*)$ /index.php?s=/$1 last;
  19. }
  20. }
  21. #error_page 404 /404.html;
  22. # redirect server error pages to the static page /50x.html
  23. #
  24. error_page 500 502 503 504 /50x.html;
  25. location = /50x.html {
  26. root html;
  27. }
  28. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  29. #
  30. #location ~ \.php$ {
  31. # proxy_pass http://127.0.0.1;
  32. #}
  33. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  34. #
  35. location ~ \.php$ {
  36. root /www/api.demo.xyz/public;
  37. fastcgi_pass 127.0.0.1:9000;
  38. fastcgi_index index.php;
  39. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  40. include fastcgi_params;
  41. }
  42. # deny access to .htaccess files, if Apache's document root
  43. # concurs with nginx's one
  44. #
  45. #location ~ /\.ht {
  46. # deny all;
  47. #}
  48. }

关于nginx配置cors需要说明的一些问题

1.按照CORS on Nginx来配置结果不生效


  1. #
  2. # Wide-open CORS config for nginx
  3. #
  4. location / {
  5. if ($request_method = 'OPTIONS') {
  6. add_header 'Access-Control-Allow-Origin' '*';
  7. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  8. #
  9. # Custom headers and headers various browsers *should* be OK with but aren't
  10. #
  11. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
  12. #
  13. # Tell client that this pre-flight info is valid for 20 days
  14. #
  15. add_header 'Access-Control-Max-Age' 1728000;
  16. add_header 'Content-Type' 'text/plain; charset=utf-8';
  17. add_header 'Content-Length' 0;
  18. return 204;
  19. }
  20. if ($request_method = 'POST') {
  21. add_header 'Access-Control-Allow-Origin' '*';
  22. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  23. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
  24. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  25. }
  26. if ($request_method = 'GET') {
  27. add_header 'Access-Control-Allow-Origin' '*';
  28. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  29. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
  30. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  31. }
  32. }

2.按照Using CORS来配置成功解决了跨域问题


  1. # 其实就是将下面这段配置放到location块外面
  2. add_header Access-Control-Allow-Origin *;
  3. add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
  4. add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
  5. if ($request_method = 'OPTIONS') {
  6. return 204;
  7. }

服务器最终的目录结构为

来源:https://segmentfault.com/a/1190000016236681

TP5.1+Vue前后端分离实践的更多相关文章

  1. 基于 koajs 的前后端分离实践

    一.什么是前后端分离? 前后端分离的概念和优势在这里不再赘述,有兴趣的同学可以看各个前辈们一系列总结和讨论: 系列文章:前后端分离的思考与实践(1-6) slider: 淘宝前后端分离实践 知乎提问: ...

  2. 解决Django+Vue前后端分离的跨域问题及关闭csrf验证

      前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道   在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...

  3. Flask + vue 前后端分离的 二手书App

    一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...

  4. 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  5. 两个开源的 Spring Boot + Vue 前后端分离项目

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  6. beego-vue URL重定向(beego和vue前后端分离开发,beego承载vue前端分离页面部署)

    具体过程就不说,是搞这个的自然会动,只把关键代码贴出来. beego和vue前后端分离开发,beego承载vue前端分离页面部署 // landv.cnblogs.com //没有授权转载我的内容,再 ...

  7. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题

    原文链接:https://segmentfault.com/a/1190000012879279 当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异.笔者前几天刚好在负责一个项目的权限管理 ...

  8. Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案

    因为我们做的是前后端分离项目 无法采用response.write直接将文件流写出 我们采用阿里云oss 进行保存 再返回的结果对象里面保存我们的文件地址 废话不多说,上代码 Springboot 第 ...

  9. @vue/cli 4.0+express 前后端分离实践

    之前总结过一篇vue-cli 2.x+express+json-server实现前后端分离的帖子,@vue/cli3.0及4.0搭建的项目与vue-cli2.x的项目结构有很大的不同.这里对@vue/ ...

随机推荐

  1. idea 2018版最新激活注册方法

    1. 下载破解补丁文件,路径为:http://idea.lanyus.com/jar/JetbrainsCrack-2.7-release-str.jar 2.将补丁放在安装包的/bin路径下,如图中 ...

  2. SSM整合中错误:Data truncation: Data too long for column 'gender' at row 1

    错误描述 ### SQL: insert into t_customer(name,gender,phone,address) values (?,?,?,?) ### Cause: com.mysq ...

  3. spring mvc 数据校验(bean实体注解实现)

    spring mvc 数据校验 1.添加个jar (jar与一版本会冲突) <dependency> <groupId>com.fasterxml</groupId> ...

  4. Java中日期

    package com.shiro.springbootshiro; import java.text.SimpleDateFormat; import java.util.Date; /** * 作 ...

  5. 【noip2016提高组day2T3】【愤怒的小鸟】状压dp转移时的集合包含

    (上不了p站我要死了,图来自百度,侵权度娘背锅) 调死我了... 标题就说明了,死在了集合包含上.因为这道题与其他的状压题不同,其他的题基本上都是要求集合不重合,而这道题完全是可以的. 废话不多说,先 ...

  6. 安装k8s集群(亲测)

    先安装一台虚拟机,然后进行克隆,因为前面的步骤都是一样的,具体代码如下: Last login: Mon Nov 25 00:40:34 2019 from 192.168.180.1 ##安装依赖包 ...

  7. C++语法一二

    写在前面(C++和java的一些区别): (1)      C++中数组的定义为 int a[8];而在java中一般定义为int[] a=new int[8];如果定义的时候进行初始话,也可以缺省数 ...

  8. 大数据笔记(三)——Hadoop2.0的安装与配置

    一.Hadoop安装部署的预备条件 准备:1.安装Linux和JDK. 安装JDK 解压:tar -zxvf jdk-8u144-linux-x64.tar.gz -C ~/training/ 设置环 ...

  9. 最新版本的JDK安装和配置(Java SE 10.0.2)

    1.废话少说,要么百度JDK,要么直接点传送门http://www.oracle.com/technetwork/java/javase/downloads/index.html.这里需要说的JDK包 ...

  10. Linux内核调试方法总结之反汇编

    Linux反汇编调试方法 Linux内核模块或者应用程序经常因为各种各样的原因而崩溃,一般情况下都会打印函数调用栈信息,那么,这种情况下,我们怎么去定位问题呢?本文档介绍了一种反汇编的方法辅助定位此类 ...