Несколько сайтов NGINX на одном хосте

Я довольно новичок в Nginx. Когда я подключаюсь к своему серверу, я хотел бы иметь несколько сайтов на одном хосте. Каждый сайт представляет собой отдельный док-контейнер, являющийся сервером образа Nginx, обслуживающим приложение Angular. Я использую прокси-проход, потому что в конечном итоге мы будем использовать функцию балансировки нагрузки.

Например, когда я иду на <host name>/teamsite, это должен быть прокси для вышестоящего сервера http://teamsite.

Следующий код отлично работает, используя только 1 сайт с переходом на .

upstream teamsite {
    server localhost:8200;
}

server {

    listen 80;
    location / {

        proxy_pass          http://teamsite;
        proxy_redirect      off;

        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Host $server_name;

        gzip on;
        gzip_types          text/plain application/xml application/javascript;
        gzip_proxied        no-cache no-store private expired auth;
        gzip_min_length     1000;

    }

}

Когда я пытаюсь добавить в /teamsite, он перестает работать.

Пример:

upstream teamsite {
    server localhost:8200;
}

server {

    listen 80;
    location /teamsite {

        proxy_pass          http://teamsite;
        proxy_redirect      off;

        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Host $server_name;

        gzip on;
        gzip_types          text/plain application/xml application/javascript;
        gzip_proxied        no-cache no-store private expired auth;
        gzip_min_length     1000;

    }

}

Похоже, Nginx ищет файлы в localhost:8200/teamsite/index.html вместо localhost:8200/index.html. Любые идеи, почему дополнительные /teamsite/ добавляются к вышестоящему серверу?

Спасибо за помощь.

Редактировать:

Я пробовал следующий конфиг:

server {

    listen 80;
    location /teamsite/ {

        proxy_pass          http://localhost:8200/;
        }
}

Теперь при подключении к <host name>/teamsite обратный прокси выдает ошибки отказа в соединении. Версия Nginx для веб-сервера не показывает никаких подключений или ошибок. Я могу подключиться к версии Nginx для веб-сервера с сервера и моей локальной машины.


person user616270    schedule 21.12.2019    source источник


Ответы (1)


Этот ответ https://serverfault.com/a/725433 показывает правильный синтаксис того, что вы пытаетесь сделать, и показывает, как переписывание URL работает.

person edgars    schedule 21.12.2019
comment
Да, я попробовал это, обратный прокси-сервер теперь выдает ошибки отказа в соединении при попытке подключения к веб-серверу. Запрос действительно кажется правильным из журналов. Журналы веб-сервера Nginx не показывают никаких ошибок/запросов. Я должен получить файлы непосредственно с веб-сервера Nginx на вашем локальном компьютере. Список новых конфигураций теперь находится в исходном сообщении. - person user616270; 21.12.2019