я использую конфиг ниже. это работает, но проблема для меня - повторение некоторых строк. что proxy_*
директивы должны быть location /admin
также, потому что только один location
будет выполняться Nginx на запрос. Какие варианты у меня есть, чтобы удалить этот дубликат кода, не извлекая его в новые файлы и включить его впоследствии?
Есть ли возможность сказать, что nginx продолжать location @rails
после того, как location /admin
был выбран и обработан?
ну и кстати, в чем разница между location @rails
и location /
?
server {
...
location /admin {
include /etc/nginx/force_ssl;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://rails;
}
location @rails {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://rails;
}
...
}
/ И т.д. / Nginx / force_ssl:
if ( $scheme = "http" ) {
rewrite ^/(.*)$ https://$host/$1 permanent;
}
location @rails
иlocation /
(root, а не / admin!). я могу заменить @rails на / без явных изменений в поведении веб-сервера .../
и@rails
потому, что это зависит от двух факторов: 1. Как ваше бэкэнд-приложение обрабатывает переписанные запросы 2. Остальным из вас Nginx conf, который вы не опубликовали. Например , если вашlocation /
не делает ничего другого , чем назвать@rails
это вполне возможно , что вы могли бы, а просто броситьlocation /
и переименовать@rails
в/
, но это только и пример , и я ничего не могу гарантировать.proxy_*
директивыrewrite . @reils last;
наlocation /admin
сейчас. сейчас он перенаправляет меня на https, но не запрашивает приложение @rails. вывод остается пустым белым. :(