Nginx ters proxy olarak yapılandırıldığında, ana bilgisayar üstbilgisini Apache'nin ProxyPreserveHost gibi alt sunucuya yeniden yazabilir mi?


Yanıtlar:


11

Sanırım soruna bir çözüm buldum. Akış aşağı sunucunun ana bilgisayarını gönderme nginx varsayılan davranıştır ve yönergeyi kullanarak geçersiz kılınmıştı:

proxy_set_header Host $host;

Hangi tarayıcı tarafından istenen ana bilgisayar aşağı akış sunucusuna gönderir. İstediğimin tam tersi.

Dolayısıyla nginx'in Apache'lere eşdeğer olmasa da ProxyPreserveHost, aynı davranış proxy_set_headerdirektifle elde edilebilir ve nginx'in çözümü daha geneldir.


Olmalı proxy_set_header Host $http_host;.
Rob

@Rob, $http_hostNginx belgelerine göre mevcut değil: nginx.org/en/docs/varindex.html
Daniel Serodio

1
@DanielSerodio Aslında evet, bağlantıların en az% 99,99'u için var. Belgelere bakın . Ayrıca çok incelikli bir şekilde farklıdır $host.
Michael Hampton

@MichaelHampton Düzeltildiğim için teşekkür ederim, bağlantı için teşekkürler
Daniel Serodio

1

Çalışan bir örnek:

  set $s3_bucket 'SOMEBUCKET.s3.amazonaws.com';

  location / {
        send_timeout 5m;
        proxy_read_timeout 240;
        proxy_send_timeout 240;
        proxy_connect_timeout 240;
        proxy_http_version 1.1;
        proxy_set_header Host $s3_bucket;
        proxy_set_header Authorization '';
        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-request-id;
        proxy_ignore_headers "Set-Cookie";
        proxy_buffering off;
        proxy_intercept_errors on;
        proxy_redirect off;
        resolver 8.8.8.8;
        proxy_pass http://$s3_bucket;
        }

Bu nginx kullanıyor.
cod3fr3ak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.