Проблема настройки обратного прокси nginx - PullRequest
0 голосов
/ 17 января 2019

Я изо всех сил пытаюсь настроить простой обратный прокси.

В браузере я пишу 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;

...