为 nginx 上的应用程序添加上下文路径

问题描述 投票:0回答:2

Nginx 负责从根目录到根 URL 的所有静态内容。例如,如果根内容位置配置为

/usr/share/nginx/html
,其中包含文件
/usr/share/nginx/html/foo.html
,则 url
http://localhost/foo.html
将提供该 html 文件。我想在 URL 中添加上下文路径前缀,以便
http://localhost/myapp/foo.html
应该提供
/usr/share/nginx/html/foo.html
文件。

我尝试更改位置并添加别名,但这给出了 404。

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
  }

  location /myapp/ {
    alias   /usr/share/nginx/html/;
  }

我也希望

http://localhost/myapp
应该服务
/usr/share/nginx/html/index.html

我正在使用 nginx 的

1.12.1-alpine
docker 镜像

nginx nginx-location
2个回答
5
投票

试试这个

  index  index.html index.htm;
  location / {
    root   /usr/share/nginx/html;
  }

  location /myapp/ {
    alias   /usr/share/nginx/html/;
  }

如果这不起作用,请尝试以下

  index  index.html index.htm;
  location / {
    root   /usr/share/nginx/html;
  }

  location /myapp/ {
    alias   /usr/share/nginx/html/;
    try_files $uri $uri/ =404;
  }

编辑-1

如果你希望它在没有尾随/的情况下工作,那么你应该使用下面的

location ~ /app(/.*)?$ {
   alias   /usr/share/nginx/html/;
   try_files $uri $uri/ =404;
}

0
投票

根据文档带有别名的位置应与带有位置和别名的最后部分匹配

© www.soinside.com 2019 - 2024. All rights reserved.