当前位置: 首页 > 知识库问答 >
问题:

关于 nginx 中 location 下的 alias 配置的问题?

慕容晔
2024-01-26

如果配置是

server {    listen 8002;    location /about/ {      alias html;      index index.html;    }  }

访问 http://localhost:8002/about/ 会返回 403 禁止

server {    listen 8002;    location /about/ {      alias html/;      index index.html;    }  }

访问 http://localhost:8002/about/ 会返回 html 目录下的 index.html 文件,这是符合预期的

server {    listen 8002;    location ~ /about/ {      alias html/;      index index.html;    }  }

访问 http://localhost:8002/about/ 会不断进行重定向生成 http://localhost:8002/about/index.html/index.html/...../index... 直到长度超过限制而访问出错。

为什么会出现第一和第三种的情况?

共有2个答案

平元明
2024-01-26

alias 的文档描述是替换一个指定的路径,这里的路径指的是nginx宿主机上的文件路径。比如:

location /i/ {    alias /data/w3/images/;}# 当请求路径为 /i/top.gif 时,会返回 /data/w3/images/top.gif 这个文件

第一个例子中:请求路径会被映射成 /html/index.html, nginx 会尝试访问这个文件,由于nginx没有权限访问,所以会返回 403。

当在正则表达式中使用 alias 时,正则表达式中应该包含捕获,并且在 alias 中明确指定替换捕获。

location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {    alias /data/w3/images/$1;}

第三种写法是不和规范的。

详情见 nginx alias 文档

柴琦
2024-01-26

第一种,当访问 /about 时,他会去找文件 htmlindex.html 而不是预期的 html/index.html

(很多文章都说要加上尾斜杠,实际也确实如此,但是 nginx 的官方手册中似乎没有提及。不过给出的示例里面都是有的)

第三种,按照手册上的说法,你应该使用捕获组。

If alias is used inside a location defined with a regular expression then such regular expression should contain captures and alias should refer to these captures (0.7.40), for example:

location ~ ^/users/(.+.(?:gif|jpe?g|png))$ {
alias /data/w3/images/$1;
}
  • Module ngx_http_core_module
 类似资料:
  • 包含片段/fastcgi-php.com;= 这是我的配置,我一辈子都不能让它工作。 我的期望是有超文本传输协议://mediaserver.localdomain/去"/var/www/html/组织者/index.php" 当我转到http://mediaserver时。localdomain/homelab/it提取“/opt/homelab/index.php” 但只有超文本传输协议://

  • 本文向大家介绍nginx配置location方法总结,包括了nginx配置location方法总结的使用技巧和注意事项,需要的朋友参考一下 location匹配顺序 1."="前缀指令匹配,如果匹配成功,则停止其他匹配 2.普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配) 3.正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配 4.如

  • 本文向大家介绍Nginx配置中指令root和alias的区别浅析,包括了Nginx配置中指令root和alias的区别浅析的使用技巧和注意事项,需要的朋友参考一下 前言 最近在nginx上部署日志分析工具awstats时,在配置awstats分析结果可供网页浏览这步时,分析结果页面访问总是404.后来查阅了一些资料,发现是root和alias的用法区别没搞懂导致的,这里特地将这两者区别详尽道来,供

  • 本文向大家介绍简介Nginx中的location匹配规则,包括了简介Nginx中的location匹配规则的使用技巧和注意事项,需要的朋友参考一下 location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 =      #进行

  • 本文向大家介绍解决tp5在nginx下修改配置访问的问题,包括了解决tp5在nginx下修改配置访问的问题的使用技巧和注意事项,需要的朋友参考一下 第一:修改nginx配置 注意:所有配置都是基于lnmp1.4的一键安装环境的 根据自己的nginx配置,找到正确的fastcgi.conf,修改fastcgi_param参数 将默认的路径修改至自己的项目根目录的上一级,注意是上级!!! 3、lnmp

  • wordpress搭建的博客从宝塔上换到centos7系统中,nginx配置https,访问域名在开启clash网络代理情况下可以正常访问,但是关闭clash就访问失败。使用PHP8.2、MySql5.7、Nginx1.25 nginx配置 开启防火墙放开80、22、443端口,后关闭防火墙还是不行,然后查看nginx和PHP-fpm的端口,还更换PHP—fpm版本,更该wordpress权限,更