Я изо всех сил пытаюсь настроить простой обратный прокси.
В браузере я пишу URL http://my_domain/my_app,, который затем должен быть передан nginx на мой внутренний сервер приложений http://127.0.0.1:9000/
http://my_domain/my_app --> http://127.0.0.1:9000/
Когда сервер приложений получает http://127.0.0.1:9000/, он перенаправляет меня на http://127.0.0.1:9000/init/login,, который должен быть переведен nginx обратно на http://my_domain/my_app/init/login
http://127.0.0.1:9000/init/login --> http://my_domain/my_app/init/login
Насколько я понимаю, nginx doc, вот мой конфиг:
location ~ ^/my_app(.*)$ {
proxy_pass http://127.0.0.1:9000$1;
proxy_redirect http://127.0.0.1:9000/ $scheme://$host/my_app/;
}
Кажется, что прокси-сервер работает правильно, переводя
http://my_domain/my_app -> http://127.0.0.1:9000/
но в обратном направлении я перенаправлен на http://my_domain/init/login,, что недопустимо. Должно быть http://my_domain/my_app/init/login
Есть идеи, как написать конфиг nginx?
EDIT :
Это веб-приложение Play Framework, установленное на Synology DSM 6.0 и обслуживаемое по умолчанию сервером nginx. Конфигурация nginx довольно большая, поэтому здесь есть только раздел сервера:
server {
listen 80 default_server;
listen [::]:80 default_server;
gzip on;
server_name _;
location ~ ^/volume(?:X|USB|SATA|Gluster)?\d+/ {
internal;
root /;
open_file_cache off;
include app.d/x-accel.*.conf;
include conf.d/x-accel.*.conf;
}
include app.d/www.*.conf;
include app.d/alias.*.conf;
include /usr/syno/share/nginx/conf.d/www.*.conf;
include conf.d/www.*.conf;
location = /webdefault/images/logo.jpg {
alias /usr/syno/share/nginx/logo.jpg;
}
error_page 403 404 500 502 503 504 @error_page;
location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
allow all;
}
location ^~ /.well-known/acme-challenge {
root /var/lib/letsencrypt;
default_type text/plain;
}
include app.d/.location.webstation.conf*;
location / {
rewrite ^ / redirect;
}
location ~ ^/$ {
rewrite / http://$host:5000/ redirect;
}
}
Моя директива Location
включена в оператор include conf.d/www.*.conf;