You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTTPS重定向触发404错误,请求排查Nginx配置问题

问题原因

从access日志能看到,Nginx在尝试读取本地文件/usr/share/nginx/html/coletor,这说明你的HTTP请求根本没进入配置的80端口跳转server块,而是被其他默认server块处理了——它直接去静态文件目录找资源,自然找不到coletor,返回404。

看你的完整配置,http块里先执行了include /etc/nginx/conf.d/*.conf;,这行在你写的80端口server块之前。如果/etc/nginx/conf.d/目录下有默认配置文件(比如default.conf),里面大概率有个监听80端口、匹配localhost或者标记为default_server的server块,Nginx会优先用这个配置处理你的请求,跳过了你的跳转规则。

解决办法

有两种简单的修复方式:

方案一:移除默认配置文件

找到/etc/nginx/conf.d/default.conf(或者类似名称的默认配置),直接删除它,或者重命名成非.conf后缀的文件(比如default.conf.bak),这样Nginx就不会加载这个默认server块,你的跳转配置就会生效。

方案二:调整include语句的位置

把include /etc/nginx/conf.d/*.conf;移到你定义的80端口server块之后。因为Nginx是按顺序匹配server块的,后面的default_server会覆盖前面的,这样能确保你的跳转规则优先被匹配。调整后的http块结构大概是这样:

http {
    # ...这里保留原有的全局配置...
    client_max_body_size         200M;
    
    map $cookie_version $version_cookie_host {
        include /etc/nginx/versions/*.conf;
    }

    map $http_app_version $version_header_host {
        include /etc/nginx/versions/*.conf;
    }

    # 先定义跳转的server块
    server {
        listen 80 default_server;
        server_name _;
        return 308 https://$http_host$request_uri;
    }

    # 再加载conf.d下的其他配置
    include                      /etc/nginx/conf.d/*.conf;

    # ...这里保留HTTPS的server块...
}

验证步骤

修改完配置后,先执行nginx -t检查配置语法是否正确,没问题的话重启Nginx(比如systemctl restart nginx),再测试http://localhost/coletor就能正常跳转到HTTPS了。


内容的提问来源于stack exchange,提问作者Mathias Hillmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:30:49