You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx单浏览器/会话仅允许单个连接的问题求助

Nginx单浏览器/会话仅允许单个连接的问题求助

大家好,我刚接触Nginx,现在用它搭配Flask+uWSGI来部署网页和文件服务,遇到了一个挺奇怪的问题,想请教各位大佬:

当我的浏览器在下载文件时,同一个浏览器里的其他标签页不管访问哪个页面或者文件,都会一直处于加载状态,只有等文件下载完成后才会开始处理这些请求。我一开始怀疑是Nginx按IP限制了连接数,试着配置了limit_conn但完全没效果。

后来我用同一台机器上的另一个浏览器测试,发现它在文件下载过程中居然能正常访问站点;用另一台机器访问也没问题。所以我觉得这应该和worker进程数、全局连接限制这些配置无关,但实在摸不清问题出在哪,希望有人能给点指导!

下面是我的Nginx配置,基本都是默认设置:

nginx.conf

worker_processes auto;

#worker_processes 4;

pid /run/nginx.pid;

include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {
    #limit_conn_zone $binary_remote_addr zone=addr:10m;
    #limit_conn_zone $server_name zone=serv:10m;

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    types_hash_max_size 2048;

    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

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

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 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 Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/x-windows-metafont image/svg+xml application/x-font-ttf font/opentype application/vnd.ms-fontobject text/x-component;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

站点配置

server {
    listen 80;
    server_name (domain) www.(domain);

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/(user)/(domain)/(domain).sock;
    }
}

可能的排查方向(供参考)

  • 检查uWSGI配置:看看uWSGI的worker进程数、线程数是不是设得太少(比如只有1个)。如果uWSGI同一时间只能处理一个请求,同浏览器会话的请求可能会被阻塞排队,而不同浏览器/机器的请求可能会建立新连接,从而绕过这个限制。
  • Nginx长连接配置:确认keepalive_timeout、keepalive_requests这些参数,同一会话的请求如果复用了同一个长连接,而文件下载请求占用了这个连接的话,后续请求就只能等待。可以尝试调整这些参数,或者关闭长连接测试。
  • 静态文件直接由Nginx处理:如果下载的是静态文件,不要通过uWSGI转发,单独配置一个location用root或alias指向文件目录,让Nginx直接响应,这样不会占用uWSGI的处理资源,也能避免阻塞其他请求。
  • 浏览器并发限制:虽然一般浏览器对同一域名有并发请求数限制(比如Chrome默认6个),但你遇到的是完全阻塞,大概率不是这个原因,但可以多开几个下载测试下,排除这个可能。

备注:内容来源于stack exchange,提问作者parsley3392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:49:37