Skocz do zawartości
daffx

Upload pliku a nginx proxy

Polecane posty

Cześć,

Mam pewien problem z nginxem który działa jako proxy (tcp). Strona działa nie ma z nią problemów do momentu gdy chce się rozpocząć upload pliku, plik jest wrzucany i w losowym momencie (zazwyczaj ok 30-50%) proces rozpoczyna się od nowa aby po czasie wyrzucić błąd w przeglądarce "ERR_HTTP2_PING_FAILED".

Całość działa na 2 vpsach, użytkownik-> proxy (vps1 nginx) -> reverse p (vps2 nginx) -> backend (vps2 apache2).

 

Konfiguracje miała działać w taki sposób aby certyfikat sprawdzany był po stronie 2 serwera a nie już na wstępie, miałem z tym problem więc znalazłem przykładowe, ale jest to raczej konfiguracja w stylu load balancera:

stream {
    upstream web_server_https {
        # Our web server, listening for SSL traffic
        # Note the web server will expect traffic
        # example here
        server VPS2:443;
}

log_format basic '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

    access_log /var/log/nginx/DOMENA.pl_access.log basic;
    error_log  /var/log/nginx/DOMENA.pl_error.log;
    server {
        listen 443;
        proxy_pass web_server_https;
        proxy_next_upstream on;
        proxy_protocol on;
    }

    upstream web_server {
        # Our web server, listening for traffic
        # Note the web server will expect traffic
        # example here
        server VPS2:80;
    }

    server {
        listen 80;
        proxy_pass web_server;
        proxy_next_upstream on;
        proxy_protocol on;
    }
}

Konfiguracja vhosta na 2 serwerze (hestiacp/vestacp):

server {
    listen      VPS2:443 ssl http2 proxy_protocol;
    server_name xxx.pl www.xxx.pl;
    ssl_certificate      /home/xxx/conf/web/xxx.pl/ssl/xxx.pl.pem;
    ssl_certificate_key  /home/xxx/conf/web/xxx.pl/ssl/xxx.pl.key;
    ssl_stapling on;
    ssl_stapling_verify on;
    error_log  /var/log/apache2/domains/xxx.pl.error.log error;
    set_real_ip_from VPS1/24;
    real_ip_header proxy_protocol;
    include /home/xxx/conf/web/xxx.pl/nginx.hsts.conf*;

    location / {
        proxy_pass      https://VPS2:8443;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi$
            root           /home/xxx/web/xxx.pl/public_html;
            access_log     /var/log/apache2/domains/xxx.pl.log combined;
            access_log     /var/log/apache2/domains/xxx.pl.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }

    location /error/ {
        alias   /home/xxx/web/xxx.pl/document_errors/;
    }

    location @fallback {
        proxy_pass      https://VPS2:8443;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include /home/xxx/conf/web/xxx.pl/nginx.ssl.conf_*;
}

I jak pisałem wszystko byłoby cudownie gdyby nie "resetowanie" się uploadu aby za 2-3 razem wywalić w/w błąd.

Ktoś stosował nginxa do takiego celu? lub ma pomysł gdzie może leżeć problem? error logi zarówno vpsa1 jak i vpsa2 nie ukazują nic z tej sytuacji.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Napisano (edytowany)

Dodaj do głównego configu serwera

client_max_body_size	100m

wartośc 100mb dopasuj sobie oczywiście do swoich potrzeb

 

Przy dużych plikach dopasuj sobie jeszcze timeout

proxy_connect_timeout       300;
proxy_send_timeout          300;
proxy_read_timeout          300;
send_timeout                300;

 

Powinno pomóc.

Edytowano przez Rafiki

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
33 minuty temu, Rafiki napisał:

Dodaj do głównego configu serwera


client_max_body_size	100m

wartośc 100mb dopasuj sobie oczywiście do swoich potrzeb

 

Przy dużych plikach dopasuj sobie jeszcze timeout


proxy_connect_timeout       300;
proxy_send_timeout          300;
proxy_read_timeout          300;
send_timeout                300;

 

Powinno pomóc.

Niestety, główny config wygląda tak:


 

   types_hash_max_size 2048;
 # Main settings
    sendfile                        on;
    tcp_nopush                      on;
    tcp_nodelay                     on;
    client_header_timeout           600s;
    client_body_timeout             600s;
    client_header_buffer_size       2k;
    client_body_buffer_size         256k;
    client_max_body_size            500m;
    large_client_header_buffers     4 8k;
    send_timeout                    600s;
    keepalive_timeout               300s;
    keepalive_requests              100000;
    reset_timedout_connection       on;
    server_tokens                   off;
    server_name_in_redirect         off;
    server_names_hash_max_size      512;
    server_names_hash_bucket_size   512;
    charset                         utf-8;


    include /etc/nginx/mime.types;
    default_type application/octet-stream;



        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;


        gzip on;
    proxy_pass_header               Set-Cookie;
#    proxy_buffers                   32 4k;
    proxy_connect_timeout           600s;
    proxy_read_timeout              600s;
    proxy_send_timeout              600s;
# define buffers, necessary for proper communication to prevent 502s
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;

Przekopiowałem trochę z 2 vpsa, poszukałem w internecie i niestety takie coś nie pomaga ;/

Problem, może być w stream {},  to co podałeś i to co dałem ja odwołuje się do http {} i nie bardzo chyba z tego korzysta. gdy przeniosę to proxy do bloku z http nginx nie wystartuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Skoro jest to proxy, to wysyła do drugiego serwa, więc ten musi mieć też odpowiednią - adekwatną do wielości pliku konfigurację.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dołącz do rozmowy

Możesz pisać i zarejestrować się później. Jeśli masz konto,Zaloguj się teraz, aby publikować na swoim koncie.

Gość
Odpowiedz...

×   Wklejony jako tekst z formatowaniem.   Wklej jako zwykły tekst

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×
×
  • Utwórz nowe...

Ważne informacje

Korzystając z forum, wyrażasz zgodę na: Warunki korzystania z serwisu, Regulamin, Polityka prywatności.