Назад | Перейти на главную страницу

Nginx проксирует один порт на несколько портов

У меня только один порт открыт в брандмауэре и работает несколько служб. Я хочу перенаправить запрос на основе URI в другое приложение. Например, если я обращаюсь к http: example.com: 8443 / test1 для перенаправления в одно приложение, работающее на порту 8440, и если я получаю доступ к http: example.com: 8443 / test1 для перенаправления на главный процесс nginx, работающий на порту 80

Мой файл конфигурации выглядит так:

server {
    listen      127.0.0.1:8443;
    location  /test1{
        proxy_pass  http://127.0.0.1:8230;
    }
}
server {
    listen      127.0.0.1:8443;
    client_max_body_size 100m;
    location  /test2{
        proxy_pass  http://127.0.0.1:80; #Nginx master webserver port
    }
}

Но когда я получаю доступ к localhost: 8443 / test2, я получаю 403 Forbidden но если я перенаправляю порт для test1 на 80, как это

server {
    listen      127.0.0.1:8443;
    location  /test1{
        proxy_pass  http://127.0.0.1:80;
    }
}

это работает.

У вас должен быть только 1 сервер, поскольку они оба слушают 127.0.0.1:8443. Тогда у вас будет два блока местоположения внутри этого сервера, например:

server {
    listen      127.0.0.1:8443;
    client_max_body_size 100m;

    location  /test1 {
        proxy_pass  http://127.0.0.1:8230;
    }


    location  /test2 {
        proxy_pass  http://127.0.0.1:80; #Nginx master webserver port
    }
}

Кроме того, помните, что вы проксирование трафик, а не перенаправлять его. Вам, вероятно, понадобится гораздо больше настроек в зависимости от того, как настроены ваши приложения, поскольку /test2 скорее всего, также будут переданы прямо на ваш сервер через порт 80.

Обновить: для поддержки PHP вам необходимо убедиться, что php-fpm установлен, и вам понадобится блок местоположения на вашем главном сервере nginx, например:

location ~ \.php$ {
    proxy_pass http://your_ip_address:8080;
    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-Proto $scheme;
}