2016-07-25 3 views
0

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

старая установка:

У меня есть файлы служили по следующему адресу: http://192.168.33.1:3000/bower_components/... например, (http://192.168.33.1:3000/bower_components/animate.css/animate.css)

У меня есть Nginx обратный прокси-сервер создан на http://192.168.33.10:80/

У меня есть следующий блок местоположения:

location /content { 
    proxy_pass http://192.168.33.1:3000/; 
    proxy_redirect off; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_max_temp_file_size 0; 
    client_max_body_size 10m; 
    client_body_buffer_size 128k; 
    proxy_connect_timeout 90; 
    proxy_send_timeout 90; 
    proxy_read_timeout 90; 
    proxy_buffer_size 4k; 
    proxy_buffers 4 32k; 
    proxy_busy_buffers_size 64k; 
    proxy_temp_file_write_size 64k; 
} 

В этой установке, следующий URL будет загружен: http://192.168.33.10/content/app/index.css

но следующий URL дал бы мне 404, даже если доступ к файлу непосредственно загрузит просто отлично: http://192.168.33.10/content/bower_components/animate.css/animate.css (или что-нибудь еще в bower_components папки по этому вопросу)

исправление:

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

location /content/bower_components { 
    proxy_pass http://192.168.33.1:3000/bower_components; 
} 

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

Любые советы относительно того, что происходит?

ответ

0

Это может или не может быть правильный ответ, но ...

Расположение блока:

location /content { 
    proxy_pass http://192.168.33.1:3000/; 
    ... 
} 

является альясинга URIs начиная с /content к /, который отсутствует завершающий /.

Я хотел бы использовать:

location /content/ { 
    proxy_pass http://192.168.33.1:3000/; 
    ... 
} 

, а затем зафиксировать конкретный случай /content, если вам нужно.

Не знаю, почему http://192.168.33.10/content/app/index.css, похоже, работает.

Для получения более подробной информации см. this document.

Смежные вопросы