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

Переназначение хоста и порта в стиле Fiddler с использованием nginx в Linux

Я пытаюсь настроить переназначение хоста и порта в Linux с использованием nginx в качестве обратного прокси.

Пока у меня есть рабочий решение для взлома гетто с помощью то if директива, который злой.

Есть ли лучшее решение без использования if?

Что я пробовал - конфигурация nginx

/etc/nginx/nginx.conf (или какой-нибудь файл /etc/nginx/conf.d/*.conf):

server {
    listen 3000;
    server_name dev.example.com test.example.com prod.example.com
    location / {
        if ($http_host ~ dev.example.com) {
            proxy_pass 127.0.0.1:13000;
        }
        if ($http_host ~ test.example.com) {
            proxy_pass 127.0.0.1:23000;
        }
        if ($http_host ~ prod.example.com) {
            proxy_pass 127.0.0.1:33000;
        }
    }
}

/ etc / hosts:

127.0.0.1 dev.example.com
127.0.0.1 test.example.com
127.0.0.1 prod.example.com

Что бы я хотел сделать - Конфигурация Fiddler HOSTS

Для тех, кто знаком с Fiddler, я пытаюсь подражать этому Конфигурация HOSTS:

localhost:13000 dev.example.com:3000
localhost:23000 test.example.com:3000
localhost:33000 prod.example.com:3000

Использовать карта модуль:

http контекст:

map $http_host $proxy_target {
    "dev.example.com" "127.0.0.1:13000";
    "test.example.com" "127.0.0.1:23000";
    "prod.example.com" "127.0.0.1:33000";
}

server контекст:

proxy_pass $proxy_target;

Кроме того, вы можете попытаться различать только порт и использовать что-то вроде

proxy_pass 127.0.0.1:$proxy_port;

но я не уверен, что это сработает.

Используйте отдельные server блоки:

server {
    server_name dev.example.com;
    listen 3000;

    proxy_pass http://127.0.0.1:13000;
}

server {
    server_name test.example.com;
    listen 3000;

    proxy_pass http://127.0.0.1:23000;
}

И еще один для prod.example.com.

Если эти конфигурации сайта содержат общие элементы, включите их в другой файл и используйте include директива для применения этих элементов к каждому виртуальному серверу.