После последнего обновления nginx все мои страницы получают:
0000 1204 0000 0000 0000 0300 0000 8000
0400 0000 0000 0500 ffff ff00 0004 0800
0000 0000 7fff 0000 0000 0807 0000 0000
0000 0000 0000 0000 01
Есть коробка FreeBSD / 10.2-RELEASE-p17 с джейлами.
10.10.10.1:80: Apache / 2.4.20 - только как внутренняя сеть - общие виртуальные хосты
XX.XX.XX.XX: 80: nginx / 1.10.0 в качестве прокси и балансировщика нагрузки для Apache24 - это общедоступно
Тест из внутренней сети работает (apache) на всех файлах:
curl -I --header 'Host: myserver.com' http://10.10.10.1:80/
HTTP/1.1 200 OK
Date: Fri, 20 May 2016 11:23:08 GMT
Server: Apache
Set-Cookie: _icl_current_language=en; expires=Sat, 21-May-2016 11:23:08 GMT; Max-Age=86400; path=/
Set-Cookie: _icl_current_language=en; expires=Sat, 21-May-2016 11:23:08 GMT; Max-Age=86400; path=/
Content-Type: text/html; charset=UTF-8
Тест из внутренней или внешней сети (nginx) не выполняется для всех файлов:
curl -I --header 'Host: myserver.com' http://XX.XX.XX.XX:80/
▒▒
Так происходит со всеми конфигами; SSL не задействован для этого сервера.
server {
listen 80 ;
server_name myserver.com
expires off;
location / {
proxy_no_cache 1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://10.10.10.1:80/;
}
}
Сначала я думал, что это может быть связано с http / 2, но я не использую его в этой конфигурации хостов. Nginx имеет несколько хостов, а некоторые из них имеют соединение http / 2 с другими хостами nginx http / 2 - это нормально работает. Для прокси-сервера других хостов на nginx установлен недопустимый SSL, но он работает.
Вот NGINX -v
nginx version: nginx/1.10.0
built with OpenSSL 1.0.2h 3 May 2016
TLS SNI support enabled
configure arguments:
--prefix=/usr/local/etc/nginx
--with-cc-opt='-I /usr/local/include'
--with-ld-opt='-L /usr/local/lib'
--conf-path=/usr/local/etc/nginx/nginx.conf
--sbin-path=/usr/local/sbin/nginx
--pid-path=/var/run/nginx.pid
--error-log-path=/var/log/nginx-error.log
--user=www
--group=www
--modules-path=/usr/local/libexec/nginx
--with-ipv6
--with-google_perftools_module
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
--http-scgi-temp-path=/var/tmp/nginx/scgi_temp
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp
--http-log-path=/var/log/nginx-access.log
--add-module=/wrkdirs/usr/ports/www/nginx/work/nginx_accept_language_module-2f69842
--with-http_addition_module
--add-module=/wrkdirs/usr/ports/www/nginx/work/nginx-auth-ldap-8517bb0
--add-module=/wrkdirs/usr/ports/www/nginx/work/ngx_http_auth_pam_module-1.2
--add-module=/wrkdirs/usr/ports/www/nginx/work/ngx_cache_purge-2.3
--add-dynamic-module=/wrkdirs/usr/ports/www/nginx/work/headers-more-nginx-module-f5559ec
--with-http_dav_module
--add-module=/wrkdirs/usr/ports/www/nginx/work/nginx-http-footer-filter-1.2.2
--with-http_geoip_module=dynamic
--with-http_gzip_static_module
--with-http_gunzip_module
--with-http_image_filter_module=dynamic
--add-module=/wrkdirs/usr/ports/www/nginx/work/nginx-notice-3c95966
--with-http_perl_module=dynamic
--with-http_realip_module
--with-http_slice_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_xslt_module=dynamic
--add-module=/wrkdirs/usr/ports/www/nginx/work/ngx_devel_kit-0.2.19
--add-module=/wrkdirs/usr/ports/www/nginx/work/memc-nginx-module-0.16
--with-pcre
--add-module=/wrkdirs/usr/ports/www/nginx/work/xss-nginx-module-0.04
--with-http_v2_module
--with-stream=dynamic
--with-stream_ssl_module
--with-threads
--with-http_ssl_module
--add-module=/wrkdirs/usr/ports/www/nginx/work/iconv-nginx-module-0.10
Это происходит только с отстающими серверами Apache. Такая же конфигурация работала последние 6 лет; это произошло после обновления nginx.
Есть идеи, что может происходить? Ошибка?
Шестнадцатеричный дамп содержит данные HTTP / 2 SETTINGS и WINDOW_UPDATE. Посмотри с nghttp -n -vvv '<host>' --hexdump
. Последние биты 0000 0807 0000 0000 0000 0000 0000 0000 01
выразить ошибку, см. rfc7540. Не уверен, но выглядит как кадр GOAWAY с кодом ошибки в конце.
Ваш curl передает http / 1.1 на порт nginx http / 2 - без надлежащего языка обновления для получения http2, вероятно, не скомпилирован с nghttp2. Nginx, со своей стороны, еще не поддерживает http / 1.1 на порте с включенным http / 2 (см. # 816) в nginx bugtrac). Таким образом, ваша версия curl и версия nginx не могут взаимодействовать друг с другом. Вы можете выполнить поиск, если случайно прослушиваете порт 80 с включенным http2 или прокси http2 на порт 80 в одном из ваших включенных блоков server {}.