Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

Upload pliku a nginx proxy


Rekomendowane odpowiedzi

Opublikowano

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.

Opublikowano (edytowane)

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.

Edytowane przez Rafiki
Opublikowano
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.

Opublikowano

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

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

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