Назад | Перейти на главную страницу

NGINX ПРОКСИ 0000 1204 0000 0000 0000 0300 0000 8000

После последнего обновления 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 с джейлами.

  1. 10.10.10.1:80: Apache / 2.4.20 - только как внутренняя сеть - общие виртуальные хосты

  2. 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 {}.