nginx文件系统中完全不同的文件夹中的不同位置

nginx文件系统中完全不同的文件夹中的不同位置,nginx,server,nginx-location,nginx-config,Nginx,Server,Nginx Location,Nginx Config,我目前正在使用nginx为一个域名的应用程序提供服务 我需要在特定的位置提供一个完全不同的应用程序,但第二个应用程序位于文件系统中一个完全不同的文件夹中 我理解root和alias之间的区别,这要感谢您,所以我选择使用alias 配置文件类似于: server { server_name myapp.dev; root /home/apps/myapp/build; error_log /home/apps/omg-errors.log warn; index index.htm

我目前正在使用
nginx
为一个域名的应用程序提供服务

我需要在特定的
位置提供一个完全不同的应用程序,但第二个应用程序位于文件系统中一个完全不同的文件夹中

我理解
root
alias
之间的区别,这要感谢您,所以我选择使用
alias

配置文件类似于:

server {
  server_name myapp.dev;
  root /home/apps/myapp/build;
  error_log /home/apps/omg-errors.log warn;
  index index.htm index.html;
  error_page 403 404 /404.html;

  location /admin {
    alias  /home/apps/admin/;
  }
}
我已经尝试使用
根目录
,删除指向的路径末端的
/admin
部分,并尝试在
位置
末端添加尾部的
/
,如:

location /admin/ {
  ...
  # also this:
  root /home/apps/;
}
重要而有趣的部分 在我的本地机器中使用
nginx
时,相同的配置非常有效,配置如下所示:

server {
  listen 80;
  server_name myapp.local;
  root /Users/lio/Projects/MyApp/my-app-static/build;
  error_log /Users/lio/Projects/MyApp/myapp-error.log warn;

  index index.htm index.html;

  location /admin {
    alias /Users/lio/Desktop/test-admin;
  }
}
日志 以下是尝试访问
/admin
路径时捕获的
错误日志:

2020/02/26 04:16:57 [error] 5704#0: *7619 open() "/home/apps/myapp/build/admin" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: myapp.dev, request: "GET /admin HTTP/2.0", host: "myapp.dev"
环境 不知道是否可能是不同操作系统和软件版本的事实,但以下是
nginx-V
提供的详细信息:

本地的

服务器


在第二个代码段中,还应提供/admin文件夹,如下所示:

location /admin/ {
  ...
  # also this:
  root /home/apps/admin;
}
否则,要访问管理区域,您需要键入yourdomain.tld/admin/admin(作为最后一个/admin)是您的
root/home/apps
声明中缺少的
/admin


这对你来说够了吗?

经过大量的尝试,我找到了窍门,那就是
^ ~

location ^~ /admin/ {
  alias /home/apps/admin/;
}

简单但(至少对我来说)棘手


两篇文章/帖子帮助我更好地理解了
位置问题。

谢谢@hugo regibo。我显示第二个代码片段只是想让大家知道,它也尝试了使用
root
alias
的所有组合,但仍然失败。我将更新问题,添加
错误日志
,该日志显示
服务器
正在尝试服务器块中主
中的文件。无论如何谢谢你!
location /admin/ {
  ...
  # also this:
  root /home/apps/admin;
}
location ^~ /admin/ {
  alias /home/apps/admin/;
}