Apache proxypass перенаправление на несколько unix сокетов - PullRequest
0 голосов
/ 11 января 2020

У меня есть сервер, который запускает несколько экземпляров flask с использованием gunicorn.socket, и сервер apache2 настроен на прокси-запрос:

<VirtualHost *:80>

        ProxyPreserveHost On

        ProxyPass / unix:///run/gunicorn_site0.sock|http://127.0.1.1/
        ProxyPassReverse / unix:///run/gunicorn_site0.sock|http://127.0.1.1/

        # RewriteEngine On
        # RewriteRule      ^/0/(.*)$ unix:///run/gunicorn_site0.sock|http://127.0.1.1/$1  [P,L]

        # ProxyPass /1 unix:///run/gunicorn_site1.sock|http://127.0.1.1/
        # ProxyPassReverse /1 unix:///run/gunicorn_site1.sock|http://127.0.1.1/

        # ProxyPass /2 unix:///run/gunicorn_site2.sock|http://127.0.1.1/
        # ProxyPassReverse /2 unix:///run/gunicorn_site2.sock|http://127.0.1.1/

</VirtualHost>

Как показано выше, если я включаю только site0 все работает нормально, то есть, когда я набираю 127.0.1.1/ в браузере, он переходит на gunicorn_site0.sock с URL 127.0.1.1/

Однако, что я действительно хочу сделать, это разрешить следующее:

# Typed in address bar                         Actual request
http://127.0.1.1/0/some/path        ->         gunicorn_site0.sock 127.0.1.1/some/path
http://127.0.1.1/1/some/path        ->         gunicorn_site1.sock 127.0.1.1/some/path
http://127.0.1.1/2/some/path        ->         gunicorn_site2.sock 127.0.1.1/some/path

Я пробовал несколько способов с RewriteRule, но безуспешно.

Есть идеи?

1 Ответ

0 голосов
/ 17 января 2020

Вы пробовали использовать "первый сайт" в / 0 вместо /? нет никаких причин, по которым он не работает, но я думаю, что вы сначала прокси-сервер «съели» все под-URL:

ProxyPass /0 unix:///run/gunicorn_site0.sock|http://127.0.1.1/0
ProxyPass /1 unix:///run/gunicorn_site1.sock|http://127.0.1.1/1
ProxyPass /2 unix:///run/gunicorn_site2.sock|http://127.0.1.1/2

Однако вам, вероятно, нужно убедиться, что все python приложения работают нормально в «подпапке». каталог». (например, установив SCRIPT_NAME в gunicorn env)

...