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

后端 - nginx 的 location 配置为什么没有生效?

单于煌
2024-01-24
server {    listen 8001 default_server;    location /about/ {      root html;      index about.html;    }  }

只有这一个地方配置了 8001 端口。

打算是通过访问 http://localhost:8001/about/ 打开 html 目录下的 about.html 的,但是返回 403 错误。如果是访问 http://localhost:8001/ 会返回 html 目录下的 index.html 文件

如果注释了这里的配置,那么 http://localhost:8001/ 是无法访问的。也就是配置是起效果的,但是不是预期的效果,可能是我对配置的理解错误或者有什么其他原因导致的?

共有1个答案

栾鸣
2024-01-24

这个问题的原因可能是由于 rootindex 指令的路径问题。在你的配置中,root 指令的路径是相对于 nginx 的工作目录的,而不是相对于 location 块。因此,你需要指定一个相对于工作目录的绝对路径。你可以尝试以下配置:

server {    listen 8001 default_server;    root /path/to/your/html; # 指定你的 html 文件的绝对路径    index about.html;    location /about/ {        try_files $uri $uri/ /about.html; # 如果 about.html 不存在,那么就尝试 index.html    }}

在上述配置中,你需要将 /path/to/your/html 替换为你的实际 html 文件的路径。这样,当访问 http://localhost:8001/about/ 时,nginx 将从指定的路径查找 about.html 文件。

另外,try_files 指令告诉 nginx 按照顺序尝试文件或目录。如果 $uri 对应的文件不存在,那么就尝试 $uri/(如果它是一个目录的话),否则就尝试 /about.html。这样,如果 about.html 不存在,那么就会尝试返回 index.html 文件。

 类似资料:
  • 我的nginx.conf配置如下 http { } server监听的是8081端口,然而当访问localhost:8081/main时,nginx并不能导航到对应的页面,而是报404错,请问这是什么原因呢? 【www路径下有2个html文件:index.html和i.html】

  • 这样配置的。正常我点击Chrome的图标应该打开 http://127.0.0.1/info.php 但是打开了 http://localhost:63343/WWW/info.php?_ijt=1c1jppcqgfa3bqa70nl45gc2m0&_ij_reload=RELOAD_ON_SAVE 这么个页面。 我试了一下。要点设置为默认才行。 那我不想设置为默认啊。怎么做呢?

  • 我有一个域名lxl.top,有两个通过docker部署在ngingx上的web前端项目log,admin, 能通过域名+端口号访问, 现在我想要通过log.lxl.top和admin.lxl.top分别访问这两个项目, 两个前缀已经在dns解析了, 在nginx配置文件中该怎么配置呢? 我的nginx配置文件如下

  • server 配置如下 问题是 1、把 root 放到 Localtion 中,同时注释掉 server 中的 root ,请求得到的实际路径是 /usr/local/nginx/html/ 2、应用1操作,同时把 location ~ .php(.*)$ 中 root 启用,实际请求会是 /data/wwwroot/public/index.php/index.php 多了个 index.php

  • 如题,我实在搞不懂,官网也没看到相关说明,他们到底是拼接呢,还是代替呢,还是别的关系?整个的访问逻辑到底是怎么样的?

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