nginx: location = / {} ошибка

Конфигурация моего nginx vhost:

server {
    listen 80;
    server_name t.xianzhi.xxx.domain;
    access_log /data/log/nginx/t.xianzhi.xxx.domain_access.log main;

    location ~ /\. {deny  all;}

    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host            $host;

    location = / {
        root /data/web/static/html;
        index index.html;
    }

    location / {
        proxy_pass          http://127.0.0.1:9000;
    }

    location = /favicon.ico {
        access_log off;
        root /data/web/static/;
    }

    location = /apple-app-site-association {
        add_header Content-Type "text/html; charset=utf-8";
        root /data/web/show/public/wap/;
    }

    location ~ \.(css|js|png|jpg|woff|ttf)$ {
        root /data/web/static;
        expires 10d;
    }

}

В качестве конфига я хочу серверировать путь / к /data/web/static/html/index.html и серверировать остальные к proxy_pass.

Правда путь / 404 не найден а остальные успешно.

Журнал:

24/Aug/2017:10:49:43 +0800  10.5.17.37  t.xianzhi.xxx.domain    -   curl/7.51.0 -   request:GET / HTTP/1.1  bbs:233status:404   upad:127.0.0.1:9000 rspt:0.017  rqtt:0.017  request_body:-

Итак, / передается прокси.

Некоторая информация:

Версия nginx: nginx/1.10.1

Итак, как это исправить?


person Nil    schedule 24.08.2017    source источник


Ответы (1)


Проблема в вашем блоке местоположения = /. Если рассматривать раздел

location = / {
    root /data/web/static/html;
    index index.html;
}

Вы указываете корень и index.html, но ничего не серверите. Поэтому вы должны изменить его на

location = / {
    root /data/web/static/html;
    index index.html;
    try_files /index.html =404;
}

or

location = / {
    root /data/web/static/html;
    try_files /index.html =404;
}
person Tarun Lalwani    schedule 24.08.2017
comment
Я попробовал это. Хорошее сообщение: / path теперь совпадает здесь. И плохое сообщение по-прежнему 404; Для отличия, мой конфиг `try_files index.html =502;`. Он возвращает 502. И я могу подтвердить, что файл `/data/web/static/html/index.html` существует. - person Nil; 24.08.2017
comment
Позвольте мне кое-что подтвердить, будет ли этот блок вызываться или нет. - person Tarun Lalwani; 24.08.2017
comment
Итак, блок = вызывается. Проверьте, помогают ли мои правки - person Tarun Lalwani; 24.08.2017
comment
Ааа, не знаю, о чем я думал, используя ./ - person Tarun Lalwani; 24.08.2017