Конфигурация 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;
}
...