nginx + HTTP/2 + HTTP POST + Safari = 错误
nginx + HTTP/2 + HTTP POST + Safari = Error
更新到 nginx 1.10.0 + OpenSSL 1.0.2(以利用 ALPN 协商)后,Safari(v9,移动和桌面)中出现了一个有趣的问题,其中首先 HTTP POST 对服务器的请求失败。没有请求到达服务器。
Safari returns 控制台中的这条消息:Failed to load resource: Could not connect to the server.
。
后续 POST 请求(再次单击同一按钮)成功。
nginx 构建详细信息
nginx version: nginx/1.10.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.2d 9 Jul 2015
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --with-http_v2_module --with-http_gunzip_module --with-openssl=/usr/src/openssl-1.0.2d
nginx 配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
proxy_buffer_size 256k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
server_tokens off;
client_max_body_size 1G;
keepalive_disable safari msie6;
keepalive_timeout 0;
include /etc/nginx/conf.d/*.conf;
}
server {
listen 443 ssl http2;
server_name *.gingrapp.com;
root /var/www/html;
ssl on;
ssl_certificate ***.crt;
ssl_certificate_key ***.crt;
ssl_dhparam /etc/ssl/dhparams.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 2m;
add_header Strict-Transport-Security "max-age=420420420420;";
include /etc/nginx/default.d/*.conf;
gzip on;
gzip_static on;
gzip_proxied any;
gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;
gzip_min_length 10240;
gzip_buffers 16 128k;
open_file_cache max=2000 inactive=60s;
open_file_cache_valid 90s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
keepalive_disable safari msie6;
keepalive_timeout 0;
location /assets {
etag on;
access_log off;
keepalive_disable safari msie6;
keepalive_timeout 0;
}
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ [^/]\.php(/|$) {
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
proxy_max_temp_file_size 512m;
fastcgi_buffer_size 256k;
fastcgi_buffers 4 512k;
fastcgi_busy_buffers_size 512k;
gzip on;
gzip_static on;
gzip_proxied any;
gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;
gzip_min_length 10240;
gzip_buffers 16 128k;
keepalive_disable safari msie6;
keepalive_timeout 0;
}
}
这是 nginx 1.9.15 和 1.10.0 中已确认的错误
-https://trac.nginx.org/nginx/ticket/979
-https://trac.nginx.org/nginx/ticket/959
我 "solved" 通过降级到 nginx 1.9.12 + OpenSSL 1.0.2h 来解决这个问题。
- Nginx 1.11.8
使用 safari、Chrome 和 firefox 时出现相同的错误,但功能不同。
Safari(OS sierra)制作与@Lee 相同的文本。
chrome 和 wget 正在下载一个包含“????????”的文件
Firefox 正在下载 .exe 文件。
我已经用 1.9.10 降级了 nginx。但同样的问题。
与 android
的 gsm 存在相同的错误
更新到 nginx 1.10.0 + OpenSSL 1.0.2(以利用 ALPN 协商)后,Safari(v9,移动和桌面)中出现了一个有趣的问题,其中首先 HTTP POST 对服务器的请求失败。没有请求到达服务器。
Safari returns 控制台中的这条消息:Failed to load resource: Could not connect to the server.
。
后续 POST 请求(再次单击同一按钮)成功。
nginx 构建详细信息
nginx version: nginx/1.10.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.2d 9 Jul 2015
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --with-http_v2_module --with-http_gunzip_module --with-openssl=/usr/src/openssl-1.0.2d
nginx 配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
proxy_buffer_size 256k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
server_tokens off;
client_max_body_size 1G;
keepalive_disable safari msie6;
keepalive_timeout 0;
include /etc/nginx/conf.d/*.conf;
}
server {
listen 443 ssl http2;
server_name *.gingrapp.com;
root /var/www/html;
ssl on;
ssl_certificate ***.crt;
ssl_certificate_key ***.crt;
ssl_dhparam /etc/ssl/dhparams.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 2m;
add_header Strict-Transport-Security "max-age=420420420420;";
include /etc/nginx/default.d/*.conf;
gzip on;
gzip_static on;
gzip_proxied any;
gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;
gzip_min_length 10240;
gzip_buffers 16 128k;
open_file_cache max=2000 inactive=60s;
open_file_cache_valid 90s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
keepalive_disable safari msie6;
keepalive_timeout 0;
location /assets {
etag on;
access_log off;
keepalive_disable safari msie6;
keepalive_timeout 0;
}
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ [^/]\.php(/|$) {
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
proxy_max_temp_file_size 512m;
fastcgi_buffer_size 256k;
fastcgi_buffers 4 512k;
fastcgi_busy_buffers_size 512k;
gzip on;
gzip_static on;
gzip_proxied any;
gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;
gzip_min_length 10240;
gzip_buffers 16 128k;
keepalive_disable safari msie6;
keepalive_timeout 0;
}
}
这是 nginx 1.9.15 和 1.10.0 中已确认的错误
-https://trac.nginx.org/nginx/ticket/979
-https://trac.nginx.org/nginx/ticket/959
我 "solved" 通过降级到 nginx 1.9.12 + OpenSSL 1.0.2h 来解决这个问题。
- Nginx 1.11.8
使用 safari、Chrome 和 firefox 时出现相同的错误,但功能不同。
Safari(OS sierra)制作与@Lee 相同的文本。
chrome 和 wget 正在下载一个包含“????????”的文件 Firefox 正在下载 .exe 文件。
我已经用 1.9.10 降级了 nginx。但同样的问题。
与 android
的 gsm 存在相同的错误