Обратный прокси Nginx вместо списка каталогов - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь, чтобы nginx обслуживал статическое содержимое, а все остальное перенаправлял на сервер rails.

Все это работает, кроме домашней страницы. Если я захожу на example.com, я получаю ошибку 403, и журнал ошибок показывает

2019/06/14 04:32:59 [error] 9746#9746: *1 directory index of "/var/www/html/" is forbidden

Я хочу, чтобы запрос отправлялся на сервер rails как example.com/ вместо попытки (и сбоя) получить список каталогов. Сервер rails должен отображать домашнюю страницу. (примечание: если я включу автоиндекс, я получу список каталогов)

Конфигурация здесь:

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name example.com;
        index index.html;
        location / {
            autoindex off;
            root /var/www/html;
            try_files $uri $uri/ @rails;
            expires max;
            access_log off;
        }
        location @rails {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:3000;
        }

}

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Если вы хотите отключить поведение index для всех URI, удалите термин $uri/ из оператора try_files.Например:

location / {
    try_files $uri @rails;
    ...
}

Подробнее см. в этом документе .


В качестве альтернативы, добавьте новый блок местоположения для специальной обработки URI /, дляПример:

location = / { 
    try_files nonexistant @rails; 
}

Подробнее см. в этом документе .

1 голос
/ 14 июня 2019

Исправление для домашней страницы: добавьте точную location для домашней страницы, например:

    location = / {
        try_files @rails =404;
    }
...