Nginx单项目多子模块部署

背景:有时候我们需要在一个项目下部署多个子应用模块,让看起来就像是同一个系统一样,比如:

  • 主应用:http://localhost:3000

  • 子应用:http://localhost:3000/admin

server {
    listen 3000;
    server_name localhost;

    location / {
        root /var/www/mainApp; ###配置主应用的文件夹
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    location /admin { ###配置子应用入口
        alias /var/www/adminApp; ###配置子应用的文件夹
        index index.html index.htm;
        try_files $uri $uri/ /admin/index.html;
    }
}

Nginx增加子配置文件

背景:有时候我们不想污染nginx.conf主配置文件,这样会使默认配置文件看起来臃肿不利于维护,我们可以按项目增加单独的子配置文件,步骤如下:

1.新增子配置

  • 新增目录: /www/server/nginx/conf.d

  • 新增子配置文件: /www/server/nginx/conf.d/halo.conf

2.编辑子配置文件

upstream halo {
  server 127.0.0.1:10601;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.xxx.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

3. 主配置文件引入子配置

向nginx.conf的http配置内写入以下代码:

注意:include前后顺序影响nginx的代理功能

include /www/server/nginx/conf.d/*.conf;

Nginx配置SPA应用

前端SPA应用发布到服务端后,访问主页正常,但是url中增加其他路由后提示404,这时需要通过Nginx将访问重定向到index.html页面,需要在站点Nginx新增如下配置:

location / {
       try_files $uri $uri/ /index.html;
}