Загрузка...

Как правильно использовать https домены в nginx load balancer?

Тема в разделе Веб-разработка создана пользователем Toil 26 фев 2024. (поднята 26 фев 2024) 118 просмотров

  1. Toil
    Toil Автор темы 26 фев 2024 ������� ������ :coder: 3543 18 ноя 2018
    Мне нужно, чтобы один домен вел на несколько других доменов, которые имеют одинаковый функционал. Если я проксирую прописав единственный домен вручную в "proxy_set_header Host" и в "proxy_ssl_name", то все работает, если беру домен из балансера с указанием порта (через $proxy_host), то получаю ошибку, что запрошенный инстанс не существует (а например на сайтах, которые находятся под cloudflare, просто получаю 404).

    Собственно, сам вопрос, как я могу брать домен из балансера, но так, чтобы он проксировался без ошибок?
    Код

    upstream vot_worker {
    # server vot-worker.onrender.com weight=3 down fail_timeout=30s;
    server vot.deno.dev:443;
    # server vot-new.toil-dump.workers.dev down weight=1 fail_timeout=30s;
    }

    server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/<my_domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<my_domain>/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # Bad Bot Blocker
    include /etc/nginx/bots.d/ddos.conf;
    include /etc/nginx/bots.d/blockbots.conf;

    server_name <my_domain>;

    location / {
    proxy_pass https://vot_worker;

    proxy_set_header Host "vot.deno.dev";
    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;
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_buffer_size 16k;
    proxy_busy_buffers_size 24k;
    proxy_buffers 64 4k;
    proxy_ssl_server_name on;
    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    proxy_ssl_name "vot.deno.dev";
    }
    }

    [IMG]
    Код

    upstream vot_worker {
    # server vot-worker.onrender.com weight=3 down fail_timeout=30s;
    server vot.deno.dev:443;
    # server vot-new.toil-dump.workers.dev down weight=1 fail_timeout=30s;
    }

    server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/<my_domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<my_domain>/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # Bad Bot Blocker
    include /etc/nginx/bots.d/ddos.conf;
    include /etc/nginx/bots.d/blockbots.conf;

    server_name <my_domain>;

    location / {
    proxy_pass https://vot_worker;

    proxy_set_header Host $proxy_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;
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_buffer_size 16k;
    proxy_busy_buffers_size 24k;
    proxy_buffers 64 4k;
    proxy_ssl_server_name on;
    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    proxy_ssl_name $proxy_host;
    }
    }
    [IMG]
    ⁡/video-translation/audio-proxy/c3a7d3378c314033969dc9e3198964b5.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=TUjU1hKqZCA89kq9Wfr3/20240225/us-east-1/s3/aws4_request&X-Amz-Date=20240225T165740Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=73dde9683c5b1ad277d9227b1bb8bf388f16d4a1169e818dc08f8ae37851764


    Если всё проксируется правильно, то отобразиться Request has expired (проксирование работает), в противном случае показывается просто заглушка от deno, что инстанс не найден (проксирование работает не правильно)
     
  2. iosios
    iosios 2 мар 2024 7 2 мар 2024
    Скорее всего, вся проблема в том, что ты используешь $proxy_host (который по умолчанию, кстати) в и хост записывается с proxy_pass, где у тебя стоит "https://vot_worker", то есть хост = vot_worker. Ну и принимающий сервер не понимает, что это за хост.
    Чтобы это исправить нужно использовать $host, так будет браться именно хост твоего ****** сервера. Если нужен хост именно с твоих ориджинов, то есть тех хостов, которые находятся "upstream vot_worker", тогда, как я знаю, можно их достать через дабл проксинг.
     
    2 мар 2024 Изменено
    1. Toil Автор темы
      iosios, спасибо за подсказку, но уже сделал через лб траефика
Top
Загрузка...