Конфигурация nginx для безопасного обслуживания активов

У меня есть веб-приложение, которое имеет статический контент и может обслуживать динамические страницы и защищенный контент. Статический контент лежит в /public папка и должна обслуживаться непосредственно nginx, Динамический контент обслуживается 127.0.0.1:3000 вверх по течению. Защищенный контент также обслуживается восходящим потоком и доступен из /assets/* URL-адрес. Этот безопасный контент может иметь те же расширения файлов, что и статический контент, но он всегда находится в /assets/,

У меня есть работа nginx конфигурация с двумя местоположениями с одинаковыми правилами проксирования. Есть ли способ уменьшить мой конфиг, каким-то образом соединяя два расположения, обслуживаемых восходящим потоком?

server {
  server_name  example.name;
  root /home/user/ruby18/app/public;
  try_files $uri @thin;
  location ^~ /assets/ {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://thin;
  }
  location ~* \.(jpeg|jpg|gif|png|ico|css|bmp|js)$ {
    root /home/user/ruby18/app/public;
  }
  location @thin {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://thin;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root html;
  }
}

upstream thin {
  server 127.0.0.1:3000;
}

1 ответ

Решение

include директива это то, что вы ищете.

/etc/nginx/proxy.conf

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://thin;

/etc/nginx/nginx.conf

server {
    server_name  example.name;
    root /home/user/ruby18/app/public;
    try_files $uri @thin;
    location ^~ /assets/ {
        include proxy.conf;
    }
    location @thin {
        include proxy.conf;
    }
    ... 
Другие вопросы по тегам