java_强哥 2024-03-08 14:40 采纳率: 62.5%
浏览 107

docker启动nginx后访问静态页面报错

docker启动nginx后访问静态页面报错

[error] 24#24: *1 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 173.221.209.195, server: localhost, request: "GET / HTTP/1.1", host: "14.242.11.42"

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-08 14:40
    关注

    引自免费微信小程序:皆我百晓生

    当Docker容器中运行的Nginx出现"rewrite or internal redirection cycle"错误,通常意味着在配置文件中存在一个循环重写规则或者内部跳转导致不断尝试重定向至同一个资源(这里是"/index.html")。针对你提供的错误信息,问题可能是由于nginx配置中的try_files指令或location块设置不正确所引起的。

    为了解决这个问题,请检查你的Nginx配置文件(通常是/etc/nginx/conf.d/default.conf/etc/nginx/nginx.conf),确保没有形成无限循环的重写规则。以下是一个修复可能存在问题的location配置示例:

    server {
        listen 80;
        server_name localhost; # 或者替换为你实际的域名/IP
    
        location / {
            root /var/www/html; # 静态页面的实际路径,请根据实际情况修改
            index index.html;
    
            # 可能是这里的try_files配置导致了循环重定向
            try_files $uri $uri/ /index.html; # 确保这不是造成循环的原因,如果是,请尝试修改为如下形式
            # try_files $uri $uri/ =404; # 如果不需要强制跳转到index.html,则可以返回404错误
    
            # 或者,如果你确实需要将所有未找到的URI都指向index.html,但又不想引起循环
            # 你可以添加一个条件来避免对/index.html本身应用这个规则
            if (!-e $request_filename) {
                rewrite ^ /index.html last;
            }
        }
    }
    

    保存更改后,重启Nginx服务以使配置生效:

    docker exec -it your_nginx_container_name nginx -s reload
    

    这里假设你已经在Docker容器内,并且知道你的Nginx容器名称。如果是在宿主机上操作,你需要使用docker restart your_nginx_container来重启容器。

    请务必根据你的实际需求和配置文件结构调整上述示例代码。同时,建议检查其他可能影响到根路径("/")请求处理的location块配置,确认无误。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起