Drupal Media, прокси nginx для apache, получает 502 Bad Request за прогресс-бар - PullRequest
2 голосов
/ 15 мая 2019

Я перенес сайт Drupal на мой сервер,

сервер использует nginx для ssl-завершения и позволяет apache делать все остальное, например, nginx работает как прокси.

Однако, используя Drupal Media-Browser для загрузки файла, я получаю ошибку «502 Bad Gateway» для запроса /file/progress/xyz (я полагаю, это индикатор выполнения), хотя фактическая загрузка файла работает, хотя .

это блок сервера nginx для сайта:

server {
  listen  443 ssl;
  listen  [::]:443 ssl;
  server_name  www.example.com;
  port_in_redirect off;

  ssl                  on;
  ssl_certificate /etc/ssl/certs/xyz.crt;
  ssl_certificate_key  /etc/ssl/certs/xyz.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
  ssl_prefer_server_ciphers   on;

  ssl_session_cache   shared:SSL:20m;
  ssl_session_timeout 60m;

  add_header Strict-Transport-Security "max-age=31536000";
  add_header X-Content-Type-Options nosniff;

  location / {
    gzip_static on;

    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header HTTPS "on";

    include /etc/nginx/proxy.conf;

  }
}

server {
  listen 80;
  listen [::]:80;
  server_name www.example.com;
  return 301 https://$server_name$request_uri;
}

а это мой proxy.conf

proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering Off;
proxy_buffers           32 4m;
proxy_busy_buffers_size     25m;
proxy_buffer_size 512k;
proxy_ignore_headers "Cache-Control" "Expires";
proxy_max_temp_file_size 0;
client_max_body_size        1024m;
client_body_buffer_size     4m;
proxy_connect_timeout 75s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_intercept_errors off;

Я также попытался добавить это в http-блок nginx.conf

fastcgi_temp_file_write_size 10m;
fastcgi_busy_buffers_size 512k;
fastcgi_buffer_size 512k;
fastcgi_buffers 16 512k;
client_max_body_size 50M;

безуспешно, поэтому я в основном попробовал все, что нашел в Интернете по этой теме, но безуспешно, хотя я довольно новичок в nginx, так что, может быть, я просто наблюдаю за чем-то?

Nginx регистрирует в error_log:

2019/05/15 08:09:26 [error] 21245#0: *42 upstream prematurely closed connection while reading response header from upstream, 
client: 55.10.229.62, server: www.example.com, request: "GET /file/progress/190432132829 HTTP/1.1", 
upstream: "http://127.0.0.1:8080/file/progress/190432132829", 
host: "www.example.com", 
referrer: "https://www.example.com/media/browser?render=media-popup&options=Uusog2IwkXxNr-0EaqD1L6-Y0aBHQVunf-k4J1oUb_U&plugins="

Так, может быть, это потому, что апстрим - это http?

Что еще больше меня беспокоит, так это то, что я зарегистрировал segfault в httpd-error_log

[core:notice] [pid 21277] AH00052: child pid 21280 exit signal Segmentation fault (11)

У меня установлено последнее ядро ​​Drupal-7.67, и все модули обновлены

с использованием PHP 7.2.17 на CENTOS7 с nginx 1: 1.12.2-2.el7
и httpd 2.4.6-88.el7.centos

Я также добавил это в настройки drupal. Php

$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = ['127.0.0.1'];

но, похоже, не имеет никакого эффекта

Обновление:

для того, чтобы завершить на этом, вот подробности неудавшегося запроса (от вкладки сети chrome)

Заголовки ответа

Connection: keep-alive
Content-Length: 575
Content-Type: text/html
Date: Wed, 15 May 2019 06:09:26 GMT
Server: nginx/1.12.2

Заголовки запроса

Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Cookie: _pk_ses.10.9e92=1; has_js=1; cookie-agreed=2; SSESS812a016a321fb8affaf4=pY3nnqqagiCksF61R45R6Zrmi6g6DdMcYRxSPM1HLP0; Drupal.toolbar.collapsed=0; _pk_id.10.9e92=614e315e332df7.1557898005.1.1557900255.1557898005.
Host: www.example.com
Referer: https://www.example.com/media/browser?render=media-popup&options=Uusog2IwkXxNr-0EaqD1L6-Y0aBHQVunf-k4J1oUb_U&plugins=
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
X-Requested-With: XMLHttpRequest

когда я удаляю php pecl-uploadprogress

yum remove php-pecl-uploadprogress.x86_64

ошибка исчезла, но индикатор выполнения не работает, хотя у меня есть apc. На странице Pecl-uploadprogress говорится, что другие реализации SAPI, кроме apache с mod_php, к сожалению, все еще имеют проблемы. Я думаю, я столкнулся с одним из них, однако я бы очень хотел, чтобы Apache сообщал о прогрессе.

...