前后台Nginx部署同域名路径区分配置

 更新时间:2026年04月30日 09:47:55   作者:遇见火星  
前后台共用一个域名部署时,通过不同路径区分静态文件和API接口,适配VueRouter的历史模式,保证页面刷新和路由跳转正常,配置Nginx时注意路径匹配顺序,前端配置路径必须与Nginx配置一致,proxy_pass后缀不能删,前后端路径要对齐

这篇主要讲的是,前后台用同一个域名部署时,怎么通过不同路径来区分前台、后台的静态文件,还有API,应用程序编程接口)接口。另外也会适配Vue Router的history(历史)模式,保证页面刷新、路由跳转都正常,不报错。

1 Nginx 核心配置

server {
    listen 80;
    server_name nature.us.com;  # 把这个改成你自己的域名
    root /usr/local/nginx/html;
    # 前台静态文件配置(访问根路径就是前台)
    location / {
        root /usr/local/nginx/html/client;  # 前台文件存在这个文件夹里
        index index.html;
        try_files $uri $uri/ /index.html;  # 解决Vue Router的history(历史)模式刷新404的问题
    }
    # 后台静态文件配置(访问/manger路径就是后台)
    location /manger {
        alias /usr/local/nginx/html/manger;  # 后台文件存在这个文件夹里
        index index.html;
        try_files $uri $uri/ /manger/index.html;  # 后台也解决Vue Router的history(历史)模式刷新404的问题
    }
    # API(Application Programming Interface,应用程序编程接口)请求代理(访问/prod-api开头的路径,会转发到后端)
    location /prod-api/ {
        proxy_pass http://localhost:8080/;  # 改成你自己的后端服务地址,末尾的/千万别删
        proxy_set_header Host $host;  # Host(主机)请求头设置
        proxy_set_header X-Real-IP $remote_addr;  # X-Real-IP(真实IP)请求头设置
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # X-Forwarded-For(转发IP列表)请求头设置
        proxy_set_header X-Forwarded-Proto $scheme;  # X-Forwarded-Proto(协议类型)请求头设置
    }
}

2 Nginx 目录结构

下面是文件存放的目录结构,一看就懂:

nginx:
└── html:
    ├── client:  # 前台的静态文件都放这里,访问根路径就找这个文件夹
    └── manger:  # 后台的静态文件都放这里,访问/manger路径就找这个文件夹

3 前端配置(Vue 项目)

3.1 后台项目配置(访问路径带/manger前缀)

1. vue.config.js 配置(给后台路径加个统一前缀/manger,和Nginx配置对应上):

module.exports = {
  publicPath: "/manger", // 后台所有路径都加/manger前缀,和Nginx的/manger路径匹配
}

2. router.js 配置(去掉URL(Uniform Resource Locator,统一资源定位符)里的#,设置基础路径):

export default new Router({
  base: "/manger",  // 基础路径和上面的publicPath一样,都是/manger
  mode: "history",  // 去掉URL(Uniform Resource Locator,统一资源定位符)里的#,这个配置需要Nginx配合上面的try_files才能用
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes,
});

3.2 前台项目配置(API请求设置)

axios 配置(给API(Application Programming Interface,应用程序编程接口)请求加个前缀/prod-api,和Nginx的代理路径对应):

import axios from 'axios'
// 创建axios实例,设置请求基础路径
export const request = axios.create({
  baseURL: "/prod-api",  // 所有API(Application Programming Interface,应用程序编程接口)请求都带/prod-api前缀,和Nginx的/prod-api路径匹配
  timeout: 5000,  // 请求超时时间,5秒没响应就报错
  headers: {
    "Content-Type": "application/json",  // Content-Type(内容类型)请求头,设置为JSON格式
  },
});
// 请求拦截器(举个例子:给请求加Token(令牌),实现登录认证)
request.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem("token");  // 从localStorage(本地存储)拿Token(令牌)
    if (token) {
      config.headers.Authorization = ` ${token}`;  // 把Token(令牌)放到Authorization(授权)请求头里传给后端
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);  // Promise(承诺)是异步编程的解决方案,此处返回错误信息
  }
);
export default request;

4 配置说明(关键注意点,一定要看!)

  •  路径匹配顺序:Nginx是按location的配置顺序来匹配路径的,所以/manger(后台)和/prod-api(API,Application Programming Interface,应用程序编程接口)的配置,一定要放在/(前台)的前面。不然所有请求都会被根路径拦截,后台和API(Application Programming Interface,应用程序编程接口)就访问不到了。
  •  Vue history模式刷新404 :之所以加try_files配置,就是为了解决刷新页面报404的问题。前台要配成/index.html,后台要配成/manger/index.html,必须和前面设置的base路径一致,不然没用。这里的history指的是Vue Router的history(历史)模式。
  •  proxy_pass末尾的/别删:配置API(Application Programming Interface,应用程序编程接口)代理时,proxy_pass后面的地址(比如http://localhost:8080/),末尾的/一定要保留。如果删掉,Nginx会把/prod-api这个前缀一起传给后端,要是后端接口里没有/prod-api,请求就会报错。
  •  前后端路径要对齐:前端配置的publicPath、router.base,必须和Nginx里对应的location路径一致;axios的baseURL,也要和Nginx的API(Application Programming Interface,应用程序编程接口)代理路径一致。只要有一个对不上,就会出现访问不到页面、接口请求失败的问题。

到此这篇关于前后台Nginx部署同域名路径区分配置的文章就介绍到这了,更多相关Nginx同域名路径区分内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux服务器下nginx的安全配置详解

    Linux服务器下nginx的安全配置详解

    本篇文章主要介绍了Linux服务器下nginx的安全配置详解,Nginx在很多高流量网站上得到了应用,有需要的朋友可了解一下。
    2016-10-10
  • 树莓派如何搭建web服务器(nginx +php + mysql + vsftpd +phpmyadmin)

    树莓派如何搭建web服务器(nginx +php + mysql + vsftpd +phpmyadmin)

    本文介绍如何使用树莓派搭建Web服务器,包括安装Nginx、PHP、MySQL、ftp和phpMyAdmin,步骤详尽,涵盖不同架构的PHP安装,提供了配置MySQL远程访问和管理数据库的方法,是搭建个人Web服务器的实用指南
    2024-11-11
  • nginx反向代理失效前端无法获取后端的数据解决办法

    nginx反向代理失效前端无法获取后端的数据解决办法

    Nginx服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的Nginx服务器重要功能,下面这篇文章主要给大家介绍了关于nginx反向代理失效前端无法获取后端的数据解决的相关资料,需要的朋友可以参考下
    2023-12-12
  • 如何用nginx解决前端部署跨域问题

    如何用nginx解决前端部署跨域问题

    这篇文章主要介绍了如何用nginx解决前端部署跨域问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Linux中Nginx反向代理如何实现不同路径访问不同的页面

    Linux中Nginx反向代理如何实现不同路径访问不同的页面

    这篇文章主要介绍了Linux中Nginx反向代理如何实现不同路径访问不同的页面方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • window下使用nginx提供文件下载服务器配置

    window下使用nginx提供文件下载服务器配置

    这篇文章主要介绍了window下使用nginx提供文件下载服务器配置,需要的朋友可以参考下
    2017-06-06
  • Nginx端口被占用的解决方案(systemctl restart nginx失败)

    Nginx端口被占用的解决方案(systemctl restart nginx失败)

    ginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat),本文给大家介绍了NGINX启动报错,端口被占用解决方案,需要的朋友可以参考下
    2024-10-10
  • nginx利用ctx实现数据共享、修改上下文功能

    nginx利用ctx实现数据共享、修改上下文功能

    这篇文章主要给大家介绍了关于nginx利用ctx实现数据共享、修改上下文功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Nginx连接保持超时(keepalive_timeout)配置小结

    Nginx连接保持超时(keepalive_timeout)配置小结

    Nginx的keepalive_timeout控制客户端连接保持时间,设置空闲超时和响应头Keep-Alive时间,下面就来介绍一下keepalive_timeout配置,感兴趣的可以了解一下
    2025-08-08
  • nginx做白名单和限流的完整过程

    nginx做白名单和限流的完整过程

    ​ 我们都知道nginx里面是可以用lua脚本做一些稍微复杂些的逻辑处理的,要使用lua脚本需要编译lua解释器,时间有限我直接用了openresty,它集成了lua和nginx,这篇文章主要介绍了nginx做白名单和限流,需要的朋友可以参考下
    2024-02-02

最新评论