Nginx代理同域名前后端分离项目的完整步骤
前后端分离项目,前后端共用一个域名。通过域名后的url前缀来区别前后端项目。
以vue+php项目为例。直接上server模块的nginx配置。
server { listen80; #listen[::]:80default_serveripv6only=on; server_namedemo.com;#配置项目域名 indexindex.htmlindex.htmindex.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_pass127.0.0.1:9000; fastcgi_passunix:/tmp/php-cgi.sock; fastcgi_indexindex.php; includefastcgi.conf; includepathinfo.conf; } #4.处理后端的静态资源 location/public/{ alias/home/wwwroot/default/demo/public/uploads/; } #error_page404/404.html; access_log/home/wwwlogs/access.logmain; }
简单解释
- 当域名后存在/api/前缀时,将转给后端处理;
- 当域名后存在/uploads/前缀时,访问后端的静态资源。
- 由于location精准匹配的原则,除以上之外的访问都会被转到第一处location访问前端页面。
例如:
访问文章列表接口
GEThttps://demo.com/api/posts
访问上传的图片
GEThttps://demo.com/uploads/xxx.jpg
访问前端首页
GEThttps://demo.com/
访问文章页面
GEThttps://demo.com/posts
PS:alias路径末尾一定要有/。
总结
到此这篇关于Nginx代理同域名前后端分离项目的文章就介绍到这了,更多相关Nginx代理同域名前后端分离项目内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!