程序员Meteor 2024-03-08 14:40 采纳率: 50%
浏览 584

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日