обратный прокси nginx, как не передавать локацию

что у нас:
обратный прокси-сервер с nginx - внешний: 10.xx.xx.xx - внутренний: 192.xx.xx.1
внутренний сервер, на котором запущена служба на порту 9010: 192.xx.xx.15
Мы уже получаем сервис, если подключаемся к прокси через https: //10.xx.xx.xx/

Но цель такая:
Чтобы получить услугу на внутреннем сервере, если мы подключаемся через https: //10.xx.xx.xx/internalserver . Но если мы установим расположение в конфигурации от / до / internalserver или / inernalserver /, мы перейдем только на страницу индекса nginx по умолчанию -> до https: //10.xx.xx.xx/index.html

Также важно: мы хотим использовать https: //10.xx.xx.xx/internalserver , но он должен быть проксирован только на http: //192.xx.xx.15: 9010 / не на http: //192.xx.xx.15: 9010 / internalserver .

Почему не работает? Мы уже пробовали некоторые команды перезаписи, но безрезультатно.

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name 10.xx.xx.xx;

    ssl_certificate            /etc/nginx/certificate.crt;
    ssl_certificate_key        /etc/nginx/certificate.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    location /test/ {
            # rewrite ^/test(/.*)$ $1 break;
            proxy_pass        http://192.xx.xx.15:9010/;
}
}
0
задан 25 June 2019 в 18:32
1 ответ

Это будет работать с перезаписью:

location /internalserver {
        rewrite /internalserver/(.*) /$1  break;
        proxy_pass         http://192.xx.xx.15:9010;
        proxy_redirect     off;
        proxy_set_header   Host $host;
}

В вашем случае вам вообще не нужно перезаписывать, просто укажите точный URL в proxy_pass:

location /internalserver {
  proxy_pass http://192.xx.xx.15:9010/;
}

Использование и расположение / важно в обоих случаях.

0
ответ дан 23 November 2019 в 23:17

Теги

Похожие вопросы