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

nginx proxy_pass с использованием подпапки

хорошо, эта задача должна быть простой, но я просто не могу заставить ее работать. Я хотел бы иметь подпапку после моего доменного имени (фактически после IP-адреса этого доменного имени), которая перенаправляет на определенный порт на том же сервере. По сути, я хочу избавиться от необходимости использовать множество портов.

Вот моя конфигурация nginx для этого

server {
    listen 80;

    index index.html index.htm index.nginx-debian.html index.php;

    server_name aaa.bbb.ccc.ddd;

    location ^~ /app2 {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://aaa.bbb.ccc.ddd:8001;
    }
}

Итак, после доступа к aaa.bbb.ccc.ddd / app2 я хотел бы, чтобы это разрешило http: //aaa.bbb.ccc.ddd: 8001.

Это может быть так сложно. Что мне здесь не хватает?

Спасибо, Пэт

Поскольку вы отметили это как вопрос обратного прокси, я предполагаю, что вы имеете в виду, что хотите проксировать запрос, чтобы пользователь видел только http://aaa.bbb.ccc.ddd/app2 URL в ее браузере.

Вы можете изменить свой location блокировать это:

location ~/app2(.*)$ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://aaa.bbb.ccc.ddd:8001$1;
}

Здесь мы фиксируем часть URI после /app2 к $1 переменную и используйте ее в proxy_pass директива.