我有一个nginx服务器在我的服务器上代理apache,安装程序一直运行良好…直到昨天,当我发现,实际上,使用PHP脚本上传文件是非常缓慢的。 由于直接使用Apache(在另一个端口)上传仍然闪电般快,我得出的结论是nginx + apache二重奏是罪魁祸首。 问题是,我不知道如何解决它…
这是我的nginx.conf
user apache; worker_processes 16; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { server_tokens off; include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; sendfile on; tcp_nopush on; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_comp_level 5; gzip_http_version 1.0; gzip_min_length 0; gzip_types text/plain text/css image/x-icon application/x-javascript; gzip_vary on; client_header_timeout 10m; client_body_timeout 10m; send_timeout 10m; fastcgi_read_timeout 600; fastcgi_send_timeout 600; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
我的proxy.conf文件如下所示:
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Protocol $scheme; client_max_body_size 500m; client_body_buffer_size 256k; client_header_buffer_size 1k; proxy_connect_timeout 1200s; proxy_send_timeout 1200s; proxy_read_timeout 1200s; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k;
而且,如果重要的话,这个iptable规则:
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:20 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:21 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20000 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10000 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:995 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:110 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
另外,好奇的是,通过nginx代理瘦(Ruby on Rails)上传仍然正常。 问题只发生在那些Apache + nginx上,而不是其他任何东西。
你们有没有经历过这个? 提前致谢。
编辑:给更多的细节,对于一个8MB的文件,铬状态栏显示,上载第一个15%总是发生真的很快。 进展然后进展到放缓到永远。