Я хочу доставить статические ресурсы через виртуальный каталог, но я застрял на следующих двух проблемах.

  1. Меня перенаправляют на URL-адрес, где nginx хочет добавить косую черту в конце имени файла и
  2. система думает, что мне нужен список каталогов вместо одного файла, в результате чего nginx делает неправильные вещи.

Пример из файла error.log:

2014/04/24 11:21:37 [error] 6808#6952: *15 directory index of "E:/fileserver/intranet/" is forbidden, client: 192.168.110.79, server: intraTest, request: "GET /intraStatic/employees/0C0C3E08-5056-A300-0E2C2FF5D437C6A3.png/ HTTP/1.1", host: "intraTest"

Фрагмент из моего файла конфигурации:

location ~ /intraStatic/ {
    autoindex  off;
    alias  e:/fileserver/intranet/;
    break;
}

Поскольку журнал включает путь, указанный в псевдониме, я знаю, что блок местоположения не игнорируется, но я не могу получить доступ к файлам в нем, даже если с разрешениями файловой системы все в порядке и файл существует и ничем не поврежден.

Поскольку Google просто отвечает результатами, каждый из которых даже более бесполезен, чем предыдущие, я могу только надеяться, что кто-то здесь сможет пролить свет на этот вопрос.

Заранее благодарим за ответы!

0
mz_01 24 Апр 2014 в 13:41

2 ответа

Лучший ответ

Спасибо всем за ответы.

Когда я был достаточно разочарован, чтобы пройти через сервер Tomcat за одним из закомментированных приложений, мне пришло в голову использовать более грубое решение, поскольку приведенные выше предложения, похоже, не работали в моем случае.

В конце концов, я переименовал папку файловой системы и пошел по следующему пути:

location ~ /intraStatic/ {
    autoindex  off;
    root  e:/fileserver/;
    break;
}

В любом случае, спасибо, что нашли время помочь мне найти решение.

0
mz_01 25 Апр 2014 в 07:16

Из ngx_http_core_module:

Если местоположение определяется строкой префикса, которая заканчивается символом косой черты, и запросы обрабатываются одним из proxy_pass, fastcgi_pass, scgi_pass, uwsgi_pass или memcached_pass, то в ответ на запрос с URI, равным этой строке, но без завершающая косая черта, постоянное перенаправление с кодом 301 будет возвращено на запрошенный URI с добавленной косой чертой. Если это нежелательно, точное совпадение URI и местоположения можно определить следующим образом:

location /user/ {
    proxy_pass http://user.example.com;
}

location = /user {
    proxy_pass http://login.example.com;
}

Так что постарайтесь:

location ~ /intraStatic {
0
pete 24 Апр 2014 в 18:00