社区首页 >问答首页 >找不到nginx位置404

找不到nginx位置404
EN

Stack Overflow用户
提问于 2016-12-12 10:58:29
回答 5查看 108.7K关注 0票数 20

下面是我的nginx配置文件。

在default.conf上,第一个位置是用来访问/usr/share/nginx/html目录的,访问http://47.91.152.99也可以。但是,当我为目录/usr/share/ nginx /public directory添加一个新位置时,当我访问http://47.91.152.99/test时,nginx返回一个404页面。

那么,这是怎么回事呢?我是不是滥用了nginx的指令?

代码语言:javascript
代码运行次数:0
复制
/etc/nginx/nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}


/etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

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

    location ^~ /test/ {
        root /usr/share/nginx/public;
        index index.html index.htm;
    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
EN

回答 5

Stack Overflow用户

发布于 2016-12-12 12:59:51

下面的错误块(在你的例子中);

代码语言:javascript
代码运行次数:0
复制
 location ^~ /test/ {
     root /usr/share/nginx/public;
     index index.html index.htm;
 }

正在告诉nginx在文件夹(root) /usr/share/nginx/public中查找目录'test‘。如果根目录中没有'test‘文件夹,它将返回404。为了解决您的问题,我建议您尝试使用别名而不是。如下所示:

代码语言:javascript
代码运行次数:0
复制
 location ^~ /test/ {
     alias /usr/share/nginx/public;
     index index.html index.htm;
 }

另外,为了方便起见,通常可以设置索引指令,这样你就不必一直重写它了……像这样;

代码语言:javascript
代码运行次数:0
复制
 server {
     listen       80;
     server_name  localhost;

     root   /usr/share/nginx/html;
     index  index.html index.htm;

     error_page   500 502 503 504  /50x.html;

     location / { }

     location ~^/test/ {
         alias /usr/share/nginx/public;
     }

     location = /50x.html {
         root   /usr/share/nginx/html;
     }
 }

有一件事你也应该考虑一下...位置块越“精确”,它在配置中的位置就应该越高。就像那个location = /50x.html。在理想的情况下,这将设置在顶部,紧跟在常规服务器块设置之后。

希望能有所帮助。

票数 30
EN

Stack Overflow用户

发布于 2018-11-11 09:11:02

root指令导致的错误

代码语言:javascript
代码运行次数:0
复制
location ^~ /test/ {
    root /usr/share/nginx/public;
    index index.html index.htm;
}

使用alias指令修复

代码语言:javascript
代码运行次数:0
复制
 location ^~ /test/ {
     alias /usr/share/nginx/public;
     index index.html index.htm;
 }

其他改进

额外提示:可以设置index指令,这样您就不必重写它了。

代码语言:javascript
代码运行次数:0
复制
server {
    listen       80;
    server_name  localhost;

    root   /usr/share/nginx/html;
    index  index.html index.htm;

    error_page   500 502 503 504  /50x.html;

    location / { }

    location ~^/test/ {
        alias /usr/share/nginx/public;
    }

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

nginx部分地根据配置中的位置匹配位置块。理想情况下,您应该反转您现在拥有的。位置块在nginx配置中会更高。为此,location = /50x.html也会向上移动。订单是

  1. 完全匹配=
  2. 正向匹配^~ /
  3. 区分大小写正则表达式~/
  4. 不区分大小写正则表达式~*
  5. 路径匹配/

更多关于nginx location priority的信息。此外,您还可以随时查看官方文档。位置块http://nginx.org/en/docs/http/ngx_http_core_module.html#location的nginx文档

票数 9
EN

Stack Overflow用户

发布于 2020-06-22 13:36:41

当你的应用是vuejs时,你需要这样写,可以防止404,注意双/test/

代码语言:javascript
代码运行次数:0
复制
   location ^~/test/ {
       alias /usr/local/soft/vuejs/;
       try_files $uri $uri/ /test/index.html;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41099318

复制
相关文章
Ngnix如何处理http请求
nginx首先确定哪个服务器应处理该请求。让我们从一个简单的配置开始,其中所有三个虚拟服务器都在端口*:80上侦听:
星哥玩云
2022/08/08
9470
测试中如何处理 Http 请求?
不知道大家平时写单测时是怎么处理 网络请求 的,可能有的人会说:“把请求函数 Mock ,返回 Mock 结果就行了呀”。
写代码的海怪
2022/08/31
1.3K0
[CodeIgniter4]概述-处理 HTTP 请求
为了充分地使用 CodeIgniter,你需要对 HTTP 请求和响应的工作方式有基本的了解。对于所有想要成功的开发者来说, 理解 HTTP 背后的概念是 必须 的。
landv
2020/03/05
1.9K0
Http请求处理流程
我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net。他们耐心、细致地告诉你如何一步步拖放控件、设置控件属性、编写CodeBehind代码,以实现某个特定的功能。
张子阳
2018/09/27
1.3K0
Http请求处理流程
如何使用Java处理HTTP请求和响应?
Java中有许多成熟的HTTP框架可以使用,例如Spring、Netty等。这些框架提供了各种HTTP处理器和工具类,使得HTTP请求和响应处理变得更加容易和高效。下面是一个简单的Java代码示例,演示如何使用Java处理HTTP请求和响应:
用户1289394
2023/08/22
6540
如何使用Java处理HTTP请求和响应?
图解 Spring:HTTP 请求的处理流程与机制【1】
2003 年,老兵哥初到中兴开始研究生实习,Spring 就是那年诞生的,2004 年 3 月发布了 1.0 版本,到现在已经超过 15 年了。从单体式分层架构到云原生微服务架构,它稳坐在 JAVA 应用框架的头把交椅上从未被撼动,它给我们带来了巨大的价值,不仅可以降低开发难度,同时还可以提升开发效率。但时间这把杀猪刀不仅改变了老兵哥,也同样没放过 Spring,我们都变得越来越强大了。
IT老兵哥
2020/01/15
1K0
图解 Spring:HTTP 请求的处理流程与机制【1】
RxJS 处理多个Http请求
有时候进入某个页面时,我们需要从多个 API 获取数据然后进行页面显示。管理多个异步数据请求会比较困难,但我们可以借助 Angular Http 服务和 RxJS 库提供的功能来实现上述的功能。处理多个请求有多种方式,使用串行或并行的方式。
阿宝哥
2019/11/05
5.8K0
NodeJS源码解析--Node如何处理HTTP请求
看过我之前的写的文章的朋友们应该会知道,使用NodeJS创建一个HTTP服务器是非常简单的。我们写的一个个API中使用req来接收请求,使用res来响应请求。那么req/res参数从何而来?http的头部信息是如何进行创建呢?接下来我们来从源码角度分析:NodeJS究竟是如何处理一个HTTP请求。
创译科技
2019/07/10
2.2K0
NodeJS源码解析--Node如何处理HTTP请求
HTTP请求与响应处理
客户端向服务器端发送请求时,有时需要携带一些客户信息,客户信息需要通过请求参数的形式传递到服务器端,比如登录操作。
Qwe7
2022/04/22
8690
HTTP请求与响应处理
客户端向服务器端发送请求时,有时需要携带一些客户信息, 客户信息需要通过请求参数的形式传递到服务器端,比如登录操作。
清出于兰
2020/10/29
9490
HTTP请求与响应处理
Influxdb的Http请求处理流程
3.4 关键函数之s.serverTCP(),使用之前初始化的listener和handler启动真正的http服务
扫帚的影子
2018/12/13
1.1K0
HTTP跨域请求后台处理
字面意思就是从Y域中去Http请求X域的后台,但是请求反馈的资源的Http头中没有包含'Access-Control-Allow-Origin'内容,什么意思呢?
Cloudox
2021/11/23
7850
【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」
最近弄的项目中要求给另外一个服务器传送数据,预定是用http的方式,在开始动手之前我打算用Spring Boot模拟下服务器之间的请求
全栈程序员站长
2022/08/31
3.3K0
【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」
面试官:tomcat是如何处理http请求的?
因为tomcat实现了Servlet规范,所以我们得掌握什么是Servlet?什么是Servlet规范? 什么是Servlet呢? Servlet是JavaEE规范的一种,主要是为了扩展Java作为W
田维常
2021/01/28
9000
Fiddler怎么抓取Net程序内部的Http请求包
(Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888)
西柚dzh
2022/06/09
9260
Fiddler怎么抓取Net程序内部的Http请求包
python 3 处理HTTP 请求的包
http: https://docs.python.org/3/library/http.html
py3study
2020/01/03
1.2K0
Python处理HTTP请求之requests指北
如果你需要在Python中进行HTTP请求的处理,有很多种方式可以使用。比较原始的有Python的内置库urllib、也有比较高级一点的第三方模块aiohttp。
州的先生
2020/09/16
3.7K0
Python处理HTTP请求之requests指北
4 OpenResty & Lua 处理各类Http请求
测试有不同的结果,form-data数据是混乱的,x-www-form-urlencoded才是正常的!
收心
2022/08/24
1.9K0
4 OpenResty & Lua 处理各类Http请求
HTTP请求的11个处理阶段
摘自 陶辉 深入理解Nginx 几乎所以有关Nginx书只要是讲深入点的就会讲到Nginx请求的11个处理阶段,要记住这些真是不易,人脑特别不擅长记住各种东西,只能做些索引罢了,能做到知道这个知识点在哪儿能找到不就行了,可是你去面试还是问这些理论,所以这里汇总下记录如下 ngx_http_phases阶段定义 typedef enum { // 在接收到完整的HTTP头部后处理的HTTP阶段 NGX_HTTP_POST_READ_PHASE = 0, /*在将请求的URI与l
三杯水Plus
2019/03/14
5960
点击加载更多

相似问题

如何在Spring中处理HTTP选项请求?

31

用tomcat和spring异步处理http请求

12

Spring boot同时处理http和HTTPS请求

20

如何在Spring中分析复杂的http请求处理?

30

Spring Boot Web:停止当前http请求处理

1163
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文