У меня есть веб-приложение со статическим содержимым, которое может обслуживать динамические страницы и защищенный контент. Статическое содержимое находится в /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;
}
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;
}
...