Nginx: Как получить доступ к моим сайтам с обратным прокси через отдельные подкаталоги

У меня есть 2 веб-приложения, которые я хочу сделать доступными в http://example.com/demo1 а также http://example.com/demo2, Моя конфигурация ниже правильно перенаправляет прокси на каждый сайт, и сайт в основном функционален, но некоторые запросы API от моего веб-приложения выполняются, потому что они пропускают /demo1 а также /demo2 подкаталоги из URL запроса. Я подозреваю, что мне может понадобиться обновить заголовок, добавив подкаталог, но я не уверен. Более подробная информация ниже.

Вот мой конфиг:

worker_processes 1;
error_log stderr notice;
daemon off;

env DEMO1_PORT_8005_TCP_ADDR;
env DEMO2_PORT_8006_TCP_ADDR;

events {
    worker_connections 1024;
}

http {

    include /usr/local/openresty/nginx/conf/mime.types;
    charset utf-8;

    ##
    # Logging Settings
    ##
    error_log /var/log/nginx/error.log warn;
    access_log /var/log/nginx/access.log;                

    ##
    # Virtual Host Configs
    #
    server {
        listen 80;
        server_name example.com;
        # root /var/www;
        root /duwamish;

        location /demo1 {
            # load static files paths first (/static/(.)*), then reverse-proxy to demo
            try_files $uri $uri/ @demo1;
        }
        location @demo1 {
            set_by_lua $server_location 'return os.getenv("DEMO1_PORT_8005_TCP_ADDR")';
            proxy_pass http://$server_location:8005;
            proxy_set_header Host $host;
        }

        location /demo2 {
            # load static files paths first (/static/(.)*), then reverse-proxy to demo
            try_files $uri $uri/ @demo2;
        }
        location @demo2 {
            set_by_lua $server_location 'return os.getenv("DEMO1_PORT_8005_TCP_ADDR")';
            proxy_pass http://$server_location:8005;
            proxy_set_header Host $host;
        }

    }

}

Мой сайт загружается нормально, но я получаю 404 на некоторые запросы, сделанные моим demo1 а также demo2 веб-приложения, поскольку URL-адрес запроса не обслуживается. Например, URL запроса http://example.com/api/submitted_thing?parameter=true когда я думаю, что это должно быть http://example.com/demo1/api/submitted_thing?parameter=true

В принципе, я хотел бы использовать что-то вроде proxy_set_header Host $host/demo1, но я не думаю, что могу добавить путь к заголовку хоста. Какие-либо предложения?

0 ответов

Другие вопросы по тегам