Выполнение перезаписи, установка заголовка, а затем его чтение из восходящего потока - PullRequest
0 голосов
/ 17 июня 2020

У меня следующая конфигурация:

upstream estatico {                   
            keepalive 1000;
            server liferay1:8444;           
           server liferay2:8444;
    }

    upstream dinamico {                     
            keepalive 1000;
            server liferay3:8444;           
            server liferay4:8444;
            server liferay5:8444;
            server liferay6:8444;
    } 

 location / {
                    expires 1h;             # expiración de 1h
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:$remote_port;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Forwarded-Proto https;

                    proxy_redirect off;
                    proxy_connect_timeout 240;
                    proxy_send_timeout 240;
                    proxy_read_timeout 240;

                    proxy_pass http://estatico$uri$is_args$args;    # Se cambia al upstream estático
                    proxy_cache edge-cache;
                    proxy_cache_lock on;
                    proxy_cache_revalidate on;
                    proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
                    proxy_cache_use_stale updating;
                    proxy_cache_valid any      1h;                  # Se definen 12h de caché (1h anterior)
                    proxy_cache_bypass $http_secret_header;
                    proxy_cache_key $c_uri;
                    proxy_cache_methods GET HEAD POST;
                    proxy_cache_bypass  $nocache;
                    proxy_no_cache      $nocache;
                    proxy_ignore_headers      Cache-Control;

                    proxy_http_version 1.1;
                    proxy_set_header Connection "";

                    add_header X-CACHE-KEY $c_uri;
                    add_header X-Cache-Status $upstream_cache_status;
                    add_header Content-Security-Policy "upgrade-insecure-requests";
            }

            # selección de contenido para campañas
            location ~ /mkt(.*)$ {                                  # ingresa con /web/sitio/mkt/pagina
                    rewrite ^(/web/.*)/mkt/([\w-]+)\.?.*$ $1/$2$3 permanent;
                    #proxy_pass http://dinamico/$uri;               # se dirige a /web/sitio/pagina
                    proxy_pass http://dinamico$uri$is_args$args;            # se dirige a /web/sitio/pagina
                    proxy_redirect off;

                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:$remote_port;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Forwarded-Proto https;

                    proxy_connect_timeout 240;
                    proxy_send_timeout 240;
                    proxy_read_timeout 240;

                    proxy_cache edge-cache;
                    proxy_cache_lock on;
                    proxy_cache_revalidate on;
                    proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
                    proxy_cache_use_stale updating;
                    proxy_cache_valid any      1h;
                    proxy_cache_bypass $http_secret_header;
                    proxy_cache_key $c_uri;
                    proxy_cache_methods GET HEAD POST;
                    proxy_cache_bypass  $nocache;
                    proxy_no_cache      $nocache;
                    proxy_ignore_headers      Cache-Control;

                    proxy_http_version 1.1;
                    proxy_set_header Connection "";

                    add_header X-CACHE-KEY $c_uri;
                    add_header X-Cache-Status $upstream_cache_status;
                    add_header Content-Security-Policy "upgrade-insecure-requests";
            }

Я пытаюсь сделать, если получил URL-адрес типа

/ web / negocios / mkt / videoconferencia

Я просто переписываю, чтобы сформировать URL-адрес, подобный этому

/ web / negocios / mkt / videoconferencia

это просто для исключения mkt из путь, а затем отправьте его в восходящий поток, который может указывать на сервер c Dynami c контент, который (восходящий динамический поток), но после перезаписи происходит то, что введите сейчас в location /, так как у меня это прокси-сервер, передающий другому upstream, весь трафик c отправляется в upstream estatico.

Я пытаюсь установить заголовок, который можно отправить на прокси, например

location ~ /mkt(.*)$ { 
 proxy_set_header My-custom-header: "valuetest";
 or
 add_header My-custom-header: "valuetest";
 }

с этим я могу отправить заголовок в восходящий поток, но затем при повторном входе в conf я хочу прочитать его вот так, чтобы выполнить proxy_pass или нет для другого восходящего потока

 location / {
  if ($upstream_http_my_custom_header =! "valuetest") {
  proxy_pass http://estatico$uri$is_args$args;
 }
 }

Я застрял на несколько дней, пожалуйста, помогите.

...