Etherpad-lite: Значки панели инструментов не отображаются после обновления (1.6.2 -> 1.8.3) при отображении в подкаталоге через обратный прокси-сервер и minify = true

Созданный на 28 апр. 2020  ·  110Комментарии  ·  Источник: ether/etherpad-lite

image

Значки панели инструментов не отображаются, и я получаю ошибки семейства шрифтов, но все они находятся в своих папках, ничего не изменилось. Вы можете помочь мне решить эту проблему?

ПОЛУЧИТЬ/static/font/Roboto-Regular.ttf net :: ERR_ABORTED 404 (не найдено)

Я получаю это для всех семейств шрифтов.

Bug Special case Bug UI express server

Самый полезный комментарий

Была точно такая же проблема.

Я использую обратный прокси, и экземпляр Etherpad находится в подкаталоге (/ etherpad). Мне удалось исправить это, добавив следующее в мою конфигурацию apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

В settings.json ничего не менял.

Все 110 Комментарий

Сообщите подробности.

Вы используете обратный прокси?
Вы работаете в режиме разработки или производства?
Минифицированный?
Защищенная копия или ваш settings.json
И т.п.

https://mclear.co.uk/2015/01/15/how-to-write-a-bug-report/

Он работает в режиме разработки, хотя в службе systemd есть «Environment = NODE_ENV = production», нет обратного прокси, css минимизирован, settings.json почти не затрагивается (изменяются только mysql и admin pw).

Похоже, что etherpad не может загрузить все шрифты, потому что смотрит на/static/font/*.ttf вместо/ etherpad / SRC / статический / шрифт /

Попробуйте включить minify в false и maxage в 0 в settings.json

Я сделал, ничего не изменилось

На моем ноутбуке, возможно, смогу помочь больше. Самое полезное - получить ваш settings.json (но удалить все пароли). Вы можете это предоставить?

FWIW Я тестировал 1.6. *> 1.8.3 и не испытывал этого, но это может быть связано с тем, что ваш settings.json имеет некоторую устаревшую неразбериху в:!

Если вы не хотите указывать настройки, нужно сделать следующее:

cp settings.json settings.backup.json
cp settings.json.template settings.json
Затем скопируйте хост / пользователя / проход базы данных из settings.backup.json в settings.json

Перезагрузите и посмотрите, исправлено ли это.

/*
  This file must be valid JSON. But comments are allowed

  Please edit settings.json, not settings.json.template

  To still commit settings without credentials you can
  store any credential settings in credentials.json
*/
{
  // Name your instance!
  "title": "HelpMe-Etherpad",

  // favicon default name
  // alternatively, set up a fully specified Url to your own favicon
  "favicon": "favicon.ico",

  //IP and port which etherpad should bind at
  "ip": "0.0.0.0",
  "port" : 9001,

  // Option to hide/show the settings.json in admin page, default option is set to true
  "showSettingsInAdminPage" : true,

  /*
  // Node native SSL support
  // this is disabled by default
  //
  // make sure to have the minimum and correct file access permissions set
  // so that the Etherpad server can access them

  "ssl" : {
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt",
            "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
          },

  */

  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
  //You shouldn't use "dirty" for for anything else than testing or development
  /*"dbType" : "dirty",
  //the database specific settings
  "dbSettings" : {
                   "filename" : "var/dirty.db"
                 },

   An Example of MySQL Configuration*/
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "etherpad",
                    "host"    : "localhost",
                    "password": "",
                    "database": "etherpad",
                    "charset" : "utf8mb4"
                  },
   "users": {
    "admin": {
        "password": "",
        "is_admin": true
        }
            },

  //the default text of a pad
  "defaultPadText" : "Willkommen zum CN-Etherpad!\n\nDieses Dokument wird beim Tippen laufend aktualisiert, sodass jeder immer denselben Text sieht. So kann man nahtlos zusammen an Dokumenten arbeiten.\n",

  /* Default Pad behavior, users can override by changing */
  "padOptions": {
    "noColors": false,
    "showControls": true,
    "showChat": true,
    "showLineNumbers": true,
    "useMonospaceFont": false,
    "userName": false,
    "userColor": false,
    "rtl": false,
    "alwaysShowChat": false,
    "chatAndUsers": false,
    "lang": "de-de"
  },

  /* Should we suppress errors from being visible in the default Pad Text? */
  "suppressErrorsInPadText" : false,

  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
  "requireSession" : false,

  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
  "editOnly" : false,

  /* Users, who have a valid session, automatically get granted access to password protected pads */
  "sessionNoPassword" : false,

  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
     but makes it impossible to debug the javascript/css */
  "minify" : false,

  /* How long may clients use served javascript code (in seconds)? Without versioning this
     may cause problems during deployment. Set to 0 to disable caching */
  "maxAge" : 21600, // 60 * 60 * 6 = 6 hours

  /* This is the absolute path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to advanced import/export features of pads*/
  "abiword" : "/usr/local/bin/abiword",

  /* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
     LibreOffice can be used in lieu of Abiword to export pads */
  "soffice" : null,

  /* This is the path to the Tidy executable. Setting it to null, disables Tidy.
     Tidy is used to improve the quality of exported pads*/
  "tidyHtml" : "/usr/bin/tidy",

  /* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
  "allowUnknownFileEnds" : true,

  /* This setting is used if you require authentication of all users.
     Note: /admin always requires authentication. */
  "requireAuthentication" : false,

  /* Require authorization by a module, or a user with is_admin set, see below. */
  "requireAuthorization" : false,

  /*when you use NginX or another proxy/ load-balancer set this to true*/
  "trustProxy" : false,

  /* Privacy: disable IP logging */
  "disableIPlogging" : false,

  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */


  // restrict socket.io transport methods
  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],

  // Allow Load Testing tools to hit the Etherpad Instance.  Warning this will disable security on the instance.
  "loadTest": false,

  // Disable indentation on new line when previous line ends with some special chars (':', '[', '(', '{')
  /*
  "indentationOnNewLine": false,
  */

  /* The toolbar buttons configuration.
  "toolbar": {
    "left": [
      ["bold", "italic", "underline", "strikethrough"],
      ["orderedlist", "unorderedlist", "indent", "outdent"],
      ["undo", "redo"],
      ["clearauthorship"]
    ],
    "right": [
      ["importexport", "timeslider", "savedrevision"],
      ["settings", "embed"],
      ["showusers"]
    ],
    "timeslider": [
      ["timeslider_export", "timeslider_returnToPad"]
    ]
  },
*/
  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
  "loglevel": "INFO",

  //Logging configuration. See log4js documentation for further information
  // https://github.com/nomiddlename/log4js-node
  // You can add as many appenders as you want here:
  "logconfig" :
    { "appenders": [
        { "type": "console"
        //, "category": "access"// only logs pad access
        }
    /*
      , { "type": "file"
      , "filename": "your-log-file-here.log"
      , "maxLogSize": 1024
      , "backups": 3 // how many log files there're gonna be at max
      //, "category": "test" // only log a specific category
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "warn" // filters out all log messages that have a lower level than "error"
        , "appender":
          {  Use whatever appender you want here  }
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "error" // filters out all log messages that have a lower level than "error"
        , "appender":
          { "type": "smtp"
          , "subject": "An error occurred in your EPL instance!"
          , "recipients": "[email protected], [email protected]"
          , "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
          , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
              "host": "smtp.example.com", "port": 465,
              "secureConnection": true,
              "auth": {
                  "user": "[email protected]",
                  "pass": "bar_foo"
              }
            }
          }
        }*/
      ]
    }
}

Ладно, круто, дай мне 2 минуты.

Нет, это не дублировалось, кнопки на панели инструментов для меня существуют ..

Это общедоступный экземпляр, к которому я могу получить доступ? не стесняйтесь, напишите мне URL [email protected]

Глупый вопрос .. Ты

  • [x] Очистить кеш браузера?
  • [x] Попытка запустить с использованием bin/run.sh

Благодаря!

К сожалению, это не публичный случай.
Я заменил settings.json новым шаблоном, а также изменил скин на no-skin. все еще безуспешно ..
И да, я запустил run.sh, перезапустил службу и снял деньги :)

Кстати, это сервис systemd:
[Единица измерения]
Описание = Etherpad
После = syslog.target network.target

[Обслуживание]
Тип = простой
Пользователь = etherpad
Группа = etherpad
Рабочий каталог = / opt / etherpad
Окружающая среда = NODE_ENV = производство
ExecStart = / opt / etherpad / bin / run.sh
Перезагрузка = всегда

[Установить]
WantedBy = multi-user.target

Как вы установили? Вы git clone или вы скачали выпущенный .zip и распаковали?

URL запроса: https://dev.com:9001/static/font/RobotoMono-Regular.ttf

jose<strong i="7">@server</strong>:~/develop$ locate RobotoMono | grep develop | grep Reg
/home/jose/develop/src/static/font/RobotoMono-Regular.ttf

Мне все хорошо.

Установил через git clone, точнее обновил. Я считаю, что он был установлен несколько лет назад (другим администратором) с помощью zip-распаковки. Я использовал rsync для обновления всего

Ах, интересно, не вставил ли последний админ какие-нибудь хаки? если вы git status видите ли вы какие-либо измененные файлы?

Что произойдет, если вы git клонируете новое репо, а затем скопируете файл settings.json? Это сработает, но, очевидно, не решит проблему странности.

Я сделаю это сейчас. да это очень странно .. как будто корневая папка для шрифтов не такая как etherpad

Код правильный, кстати. src / - это корневая папка ..

Я думаю, что предыдущий админ что-то взломал, я не могу сказать что, не увидев git diff. Можем ли мы закрыть это сейчас?

предыдущий администратор не использовал git (не был установлен), все еще не работает после чистого клона ..

@skramsa lulwut. Полностью очистить клон и запустить и не работает? :! У меня такое чувство, что с вашей настройкой что-то не так ... В журнале есть ошибки или предупреждения?

Что, если вы сделаете полностью чистый клон и не измените никаких настроек? Значит, он все еще терпит неудачу?

Есть ли шанс, что вы можете временно сделать его общедоступным для отладки?

нет, это в защищенной интрасети .. может ли обновление с 6 до 12 иметь какое-то отношение к этому?

Не уверен .. Я не уверен, что здесь другие шаги отладки ..

Единственное, что у меня есть, это ..
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429

Но вы сказали, что очистили весь кеш и выполнили чистый прогон.

Вы отключили минимизацию, rm -Rf src/node_modules && rm src/package-lock.json затем запустили bin/run.sh да? Я имею в виду, что вы сделали чистый клон, так что; \

Какие у вас значения git sha , npm --version и nodejs version пожалуйста?

npm - 6.14.4, а node -v - 12.16.2. глупый вопрос, а что именно ты имеешь в виду под "мой" мерзавец ша?

Я перешел на 1.6.2 и установил minify на false, и внезапно он снова заработал (до этого не работали даже значки старой версии). Это облегчение .. Я постараюсь на следующей неделе сделать еще одну чистую настройку с этими настройками, может быть, на этот раз все сработает: D Большое спасибо за вашу помощь !!

В папке etherpad введите git rev-parse HEAD

Я хочу посмотреть, на каком коммите вы находитесь.

Здравствуйте
У меня точно такая же проблема, только я за прокси.
Я провел тест, сохранив свою установку и клонировав репозиторий. Затем я просто скопировал свой файл конфигурации и перезапустил службу.
У меня все еще та же проблема, несмотря на новую установку.

Но :
С другой стороны, интересная вещь, когда я обращаюсь к сервису без использования прокси и без https, никаких проблем, иконки отображаются правильно !!

Конфигурация прокси-сервера apache взята из документации, с моей стороны ничего экзотического.

Была точно такая же проблема.

Я использую обратный прокси, и экземпляр Etherpad находится в подкаталоге (/ etherpad). Мне удалось исправить это, добавив следующее в мою конфигурацию apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

В settings.json ничего не менял.

@skramsa не упомянул обратный прокси, поэтому я не думаю, что это связано? Skramsa, пожалуйста, подтвердите, что в вашей настройке нет обратного прокси.

Была точно такая же проблема.

Я использую обратный прокси, и экземпляр Etherpad находится в подкаталоге (/ etherpad). Мне удалось исправить это, добавив следующее в мою конфигурацию apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

В settings.json ничего не менял.

Почему применяется правило повтора и тайм-аута?

@skramsa не упомянул обратный прокси, поэтому я не думаю, что это связано? Skramsa, пожалуйста, подтвердите, что в вашей настройке нет обратного прокси.

Да, но @julpec находится за прокси, так что я подумал, что это может быть полезно;)

Была точно такая же проблема.
Я использую обратный прокси, и экземпляр Etherpad находится в подкаталоге (/ etherpad). Мне удалось исправить это, добавив следующее в мою конфигурацию apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

В settings.json ничего не менял.

Почему применяется правило повтора и тайм-аута?

Вы правы, не думаю, что это нужно, просто торопился вчера после обновления;)

@skramsa не упомянул обратный прокси, поэтому я не думаю, что это связано? Skramsa, пожалуйста, подтвердите, что в вашей настройке нет обратного прокси.

Да, но @julpec находится за прокси, так что я подумал, что это может быть полезно;)

Это спасибо

Как напоминание :

С другой стороны, интересная вещь, когда я обращаюсь к сервису без использования прокси и без https, никаких проблем, иконки отображаются правильно !!

В моем случае очевидно, что это связано с прокси.

Кроме того, я нахожусь в ситуации миграции моего экземпляра Etherpad, и я перенес свою базу данных, а затем обновил Etherpad. У меня сейчас в журналах появляется следующее:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads

Не знаю, может ли это вызвать ошибки…

Как напоминание :

С другой стороны, интересная вещь, когда я обращаюсь к сервису без использования прокси и без https, никаких проблем, иконки отображаются правильно !!

В моем случае очевидно, что это связано с прокси.

Кроме того, я нахожусь в ситуации миграции моего экземпляра Etherpad, и я перенес свою базу данных, а затем обновил Etherpad. У меня сейчас в журналах появляется следующее:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads
Не знаю, может ли это вызвать ошибки…

Создайте для этого отдельный выпуск. Это требует решения.

У меня та же проблема.
Я за обратным прокси-сервером (Apache), и я использую (в настоящее время) последний контейнер докеров (вытащил изображение минуту назад):

$ docker image ls
REPOSITORY           TAG            IMAGE ID            CREATED             SIZE
etherpad/etherpad    latest         878d71df1b8e        44 hours ago        273MB

Панель инструментов выглядит точно так же, как в исходном отчете. Etherpad проксируется под /pad/ , но шрифты загружаются из /static/ , что приводит к 404 ошибкам.

Я бы предпочел не использовать обходной путь @lucaguindani , потому что /static/ - очень распространенный путь, который также используется другими приложениями.

Хорошо, отсортирую как можно скорее. Должен быть сегодня, может не быть объединен на этой неделе, так что вам, ребята, может понадобиться применить патч.

После недели выпуска мы все пытаемся проводить время с семьей и т. Д.

Я не могу воспроизвести это с моей конфигурацией apache. Может ли кто-нибудь вставить оскорбительную конфигурацию apache?

Протестировал nginx тоже с конфигурацией вики и не может там реплицироваться; /

image

image

Это заставляет меня думать, что вы, ребята, испытываете странную неправильную конфигурацию / причуду Apache. Откуда вы все взяли конфигурацию подкаталога apache? Мы не размещаем его на вики-афаике, так что я думаю, может быть, вы, ребята, пошли вразрез? :П

PS Я тестирую против разработки, которая в значительной степени является выпуском atm, а конфигурация nginx:

server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad {
        rewrite                /pad/(.*) /$1 break;
        rewrite                ^/pad$ /pad/ permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/socket.io {
        rewrite /pad/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

Я заметил, что тесты / frontend / index.html не работают, что кажется странным

Я также попробовал /pad/foo/p/blah чтобы убедиться, что на стороне Etherpad нет ошибок, и все выглядит нормально ...

Я не могу воспроизвести это с моей конфигурацией apache. Может ли кто-нибудь вставить оскорбительную конфигурацию apache?

Вот мой:

<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    AuthType Basic
    AuthName "authentification"
    AuthBasicProvider       ldap
    AuthLDAPURL "ldap://127.0.0.1:389/ou=****,dc=****,dc=****,dc=org"
    AuthLDAPGroupAttribute memberUid
    AuthLDAPGroupAttributeIsDN off
    require ldap-group cn=****,ou=***,dc=*****,dc=****,dc=org

    ProxyPass http://localhost:9002/ 
    ProxyPassReverse http://localhost:9002/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
    RequestHeader add X-Forwarded-User %{RU}e
</Location>

Огромное спасибо, дай мне час попробовать сегодня вечером.

Это заставляет меня думать, что вы, ребята, испытываете странную неправильную конфигурацию / причуду Apache. Откуда вы все взяли конфигурацию подкаталога apache? Мы не размещаем его на вики-афаике, так что я думаю, может быть, вы, ребята, пошли вразрез? :П

Вот

Это заставляет меня думать, что вы, ребята, испытываете странную неправильную конфигурацию / причуду Apache. Откуда вы все взяли конфигурацию подкаталога apache? Мы не размещаем его на вики-афаике, так что я думаю, может быть, вы, ребята, пошли вразрез? :П

Вот

Я посмотрел туда, и примеры не охватывают размещение Etherpad в подкаталоге для Apache ...

image

Использование немного измененной версии вашего фрагмента

<VirtualHost *:81>
<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    ProxyPass http://localhost:9001/
    ProxyPassReverse http://localhost:9001/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
</Location>
</VirtualHost>

image

jose<strong i="5">@server</strong>:~/develop$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-03-13T12:26:16

Я посмотрел туда, и примеры не охватывают размещение Etherpad в подкаталоге для Apache ...

это не имеет смысла. Вы можете поместить все, что хотите, в тег местоположения. Но я попробую прямо сейчас с вашей конфигурацией и без "подкаталога".
Кстати, спасибо за расследование

это не имеет смысла. Вы можете поместить все, что хотите, в тег местоположения. Но я попробую прямо сейчас с вашей конфигурацией и без "подкаталога".

это не имеет смысла ... в моем мозгу. Но в реальном мире проблема именно в этом!
Хороший отзыв: +1:
Однако я не понимаю, почему раньше все так хорошо работало, ведь он годами работал за обратным прокси с этой конфигурацией.
Мне действительно нужен подкаталог, поскольку у меня есть разные службы, работающие за «единым входом» apache.
Можно ли использовать в качестве местоположения что-то другое, кроме "/"?

Спасибо за работу над этой проблемой

Скопируйте / вставьте мою конфигурацию сверху, я использую другое место ...

Не вижу разницы со своим, кроме настроек аутентификации.
Я попробую прямо сейчас

Скопируйте / вставьте мою конфигурацию сверху, я использую другое место ...

все та же проблема: нет отображения иконок

Версия апача?

Версия сервера: Apache / 2.4.38 (Debian)
Сервер построен: 2019-10-15T19: 53: 42

Я исследовал с помощью инспектора элементов, и вот что он дает мне в качестве URL-адреса для шрифтов:

Request URL: https://example.org/static/font/RobotoMono-Regular.ttf

Должен быть:

Request URL: https://example.org/pad/static/font/RobotoMono-Regular.ttf

Я не могу понять, почему у меня нет подкаталога "pad".

Итак, я начал с нуля на новом хосте.

docker run --name etherpad -d \
    -e NODE_ENV=production -p 9001:9001 \
    --mount type=bind,src=/etc/localtime,dst=/etc/localtime \
    --restart=unless-stopped \
    etherpad/etherpad

В исходной комплектации ничего не изменилось.

Конфигурация Apache:

<VirtualHost _default_:443>
    ServerName host
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass             /pad/     http://localhost:9001/
    ProxyPassReverse      /pad/     http://localhost:9001/
    SSLCertificateFile  /etc/apache2/ssl/host.example.com_cert_with_chain.pem
    SSLCertificateKeyFile /etc/apache2/ssl/host.example.com_sec_key.pem
    SSLCertificateChainFile /etc/apache2/ssl/chain.pem
</VirtualHost>

Версия Apache - 2.4.29.

Очистил кеш браузера, и результат:

image

Странно. Я попробую использовать образ докера локально, чтобы посмотреть, изменится ли это.

@JohnMcLear, это действительно невероятно. Я пробовал использовать ту же конфигурацию, что и вы, на порту 81, в отдельном виртуальном хосте и т. Д., И проблема все еще возникает.
Я каждый раз очищал кеш.

Вот мои версии программного обеспечения:

node: v10.20.1
npm: 6.14.4
apache2: Apache/2.4.38 (Debian)
etherpad: 1.8.3 (6210114)

У меня точно такая же проблема. Значки отсутствуют при запуске через прокси (nginx), а для minify установлено значение true. Как только я установил для minify значение false, запустил его с помощью clearRun.sh и очистил кеш браузера, значки заработали. В более старой версии, которую мы использовали довольно долго, она работала с minify: true и этой конфигурацией Nginx:

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                #proxy_pass        http://localhost:9001/;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }
}

Я выяснил, что когда я использую конфигурацию nginx от @JohnMcLear и использую перезапись, она будет работать. Я думаю, эта проблема возникает только тогда, когда мы используем другое место (например, / pad).

Конфигурация Nginx, которая работает:

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                rewrite                /pad/(.*) /$1 break;
                rewrite                ^/pad$ /pad/ permanent;
                proxy_pass        http://localhost:9001/;
                proxy_pass_header Server;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }

        location /pad/socket.io {
                rewrite /pad/socket.io/(.*) /socket.io/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_redirect         / /pad/;
                proxy_set_header Host $host;
                proxy_buffering off;
                proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
                proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
                proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
                proxy_set_header Host $host;  # pass the host header
                proxy_http_version 1.1;  # recommended with keepalive connections
                # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
                proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection $connection_upgrade;
        }

        location /static {
                rewrite /static/(.*) /static/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_set_header Host $host;
                proxy_buffering off;
        }
}

Op сказал, что minify true / false не меняет результат. Оп также не упомянул ни одного прокси-сервера rev .... Я проверю с minify true, когда вернусь домой.

Подтверждено, что это вызвано minify.

https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150 утверждал, что minify false не имело значения, и я должен был проверить себя, так ли это ...

* фейспалм.

Исправлю как можно скорее.

FWIW Nginx также страдает от этого сбоя, и сбой присутствует на всех страницах (блокнот, индекс, таймлайдер и т. Д.).

Проблема в нашей реализации clean-css . Css 3-4 удалили параметр relativeTo и это удаление вызвало эту ошибку. Я переключился на rebase и rebaseTo в моем примере

https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 и является полуисправлением, а https://github.com/JohnMcLear/etherpad-lite/commit/a8c660822eb513e Появятся значки, но шрифт неправильный для некоторых внутренних элементов панели и, возможно, других элементов.

Есть предложения @jakubpawlowicz @seballot ?

@JohnMcLear один из способов заставить его работать на вас может заключаться в произвольных преобразованиях, см. Https://github.com/jakubpawlowicz/clean-css#how -to-apply-random-transformations-to-css-properties

Другая идея - передать параметры ввода в clean-css через хеш, см. Https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 , например

new CleanCSS().minify({"path/to/stylesheet/a.css": { styles: "/* source of a.css goes here */" }})

и используйте опцию rebaseTo , но без дальнейшего понимания я не могу сказать, сработает это или нет.

Удачи!

Закрыто ? действительно ?

ОП закрыт ... Его не следует закрывать. OP FWIW, вы можете нажать «Отписаться» или «Отписаться» или что-то еще, если вы не хотите шума.

Это все еще не решено, если у EOW нет патча, я попытаюсь исправить.

Я действительно хотел бы увидеть патч сообщества для этого, хотя, если кто-нибудь найдет время.

@JohnMcLear Я действительно хотел бы иметь возможность помочь и уделить этому время, но у меня нет навыков разработчика и тем более в nodejs. Я надеюсь, что другие смогут это сделать. Могу только поддержать вас своими мыслями ...

Хотя я ценю это, ваши мысли не меняют подгузники;)

удар @seballot

Привет, у меня нет особого представления об этом, извините ... Есть ли способ воспроизвести его локально?

  1. git clone develop
  2. превратить minify в true
  3. Запустите Etherpad и посетите планшет (убедитесь, что все работает)
  4. установить nginx
  5. Скопируйте приведенное ниже в / etc / nginx / sites-enabled / default
server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad/foo {
        rewrite                /pad/foo/(.*) /$1 break;
        rewrite                ^/pad/foo$ /pad/foo permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/foo;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/foo/socket.io {
        rewrite /pad/foo/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/foo/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}
  1. Перезагрузите nginx
    http://127.0.0.1 : 9001 / p / blah становится http://127.0.0.1/pad/foo/p/blah
  2. Откройте в браузере http://127.0.0.1/pad/foo/p/blah
  3. Щелкните вкладку сети в браузере и обратите внимание, что внутренние шрифты iframe 404. Это связано с тем, что @import передает правильный путь, но cleanCSS переписывает его (правильно) на ../../../ - я так понимаю это потому, что и блокнот, и редактор используют один и тот же @ font.css, и у них обоих? разные basePaths? тогда один работает, а другой нет после минификации. Я не могу придумать элегантного решения, но я думаю, что вы сможете?

@seballot приятель по прогрессу?

Нет, извините, я не могу найти решение ...

Я тоже, cleanCSS творит некую магию, которую я просто не понимаю (я не парень CSS), и ни один из моих экземпляров не запускается в подкаталогах, поэтому мне тоже не интересно изучать

Я не хочу, но мне может потребоваться заменить cleanCSS на csso, потому что я могу заставить csso работать, но я думаю, что в конечном итоге я не решаю проблему должным образом, и csso далеко не так эффективен, как cleanCSS для нашего варианта использования .

Я наткнулся на разработчика cleanCSS, чтобы посмотреть, сможем ли мы вместе исправить это :)

отлично ! если он хорошо работает с csso, почему бы не пойти с ним?

csso минимизирует, но не уменьшает количество загрузок страницы. Также я предпочитаю cleanCSS в качестве проекта / документации и т. Д. И не против бросить некоторые ресурсы на хороший проект, это означает, что я могу сосредоточиться на конкретных проектах Ether

Я столкнулся с той же проблемой, что и в этой теме.

  • Установлен etherpad из репозитория git, и когда я надеваю ./bin/run.sh и открываю порт 9001 на локальном хосте, установка выполняется правильно, и значки отображаются правильно.
  • Когда я запускаю это на сервере nginx (на котором также работает jitsi), я не вижу значки панели инструментов. Все остальное вроде работает отлично.

Может ли кто-нибудь посоветовать мне, как я могу решить эту проблему. В файле settings.json нет серьезных изменений.

Обходной путь - установить minify в false в settings.json

Я попробую посмотреть сегодня вечером.

Мне удалось воспроизвести проблему, используя конфигурацию nginx, предоставленную Джоном в https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151 в этой же проблеме.

Думаю, проблема есть как в опубликованной конфигурации Nginx, так и в коде Etherpad.

Подробнее позже.

Я просто потратил 2 секунды, глядя на код nginx, и у него не должно быть конфигурации для /static как это было в копии / вставке, которую я сделал, но корень проблемы глубоко внутри cleanCSS ...

У нас здесь разные проблемы.

  1. в тестовом файле конфигурации Nginx было неправильное перенаправление для /static . Отсюда следует удалить весь раздел location /static . Я думаю, вспоминая бурю электронных писем, полученную в эти дни, пользователь жаловался - действительно, - что /static столкнется с множеством других веб-приложений . Вероятно, его ввел в заблуждение пример, подобный этому;

    Это нужно исправить, просматривая документацию (вики? Где-то еще в Интернете?) И улучшая качество примеров .

  2. 4177b3f9434e переместил объявления font-face из src/static/css/pad.css в два импортированных файла ( src/static/css/pad/fonts.css и src/static/css/pad/toolbar.css ) в другом каталоге и URL-адреса в src относительно пути к таблице стилей ;

  3. Вдобавок ко всему, после слияния 95fd5ce2a45e для грядущей 1.8.4 у нас будет проблема устаревания кеша, которую также необходимо решить.

Я делаю тесты и готовлю PR.

Открыт # 4002, чтобы исправить эту проблему. Большое спасибо @JohnMcLear за предварительную работу.

@skramsa , @julpec , @lucaguindani , @ashishhari (и, очевидно, Джон): может ли кто-нибудь из вас проверить этот PR, чтобы увидеть, работает ли он для них? Если возможно, я хотел бы получить независимую проверку.

Также обратите внимание, что конфигурация обратного прокси не требует специального правила для «/ static».

Спасибо за подтверждение. Установка minify на false не решила
проблема для меня.
Я использую это при установке jitsi на экземпляре AWS EC2, и там
это сервер nginx, который используется для размещения jitsi, а также для запуска узла
сервер для службы etherpad на том же компьютере через порт 9001.

Означает ли это, что мне может потребоваться настроить другие параметры nginx? (Я не
правильно понимать обратный прокси, но может ли это быть так?) Или я
просто нужно подождать, пока исправление будет доступно.

14 мая 2020 г. в 6:07 muxator [email protected] написал:

У нас здесь разные проблемы.

1.

в тестовом файле конфигурации Nginx было неправильное перенаправление для / static. В
весь раздел location / static должен быть удален отсюда
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151 .
В электронной буре получила в эти дни, я думаю , помнить , что


к этому;

Это должно быть исправлено в документации (вики?
Кого-нибудь еще в Интернете?) И улучшения качествапримеры .
2.

4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
переместил объявления font-face из src / static / css / pad.css на два
импортированные файлы (src / static / css / pad / fonts.css и
src / static / css / pad / toolbar.css) в другом каталоге, а URL-адреса в
src относятся к пути к таблице стилей
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
3.

Кроме того, после слияния 95fd5ce
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
в грядущей версии 1.8.4 у нас будет проблема устаревания кеша
это также необходимо решить.

Я делаю тесты и готовлю PR.

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.

@skramsa , @julpec , @lucaguindani , @ashishhari (и, очевидно, Джон): может ли кто-нибудь из вас проверить этот PR, чтобы увидеть, работает ли он для них? Если возможно, я хотел бы получить независимую проверку.

Хорошо, чтобы я протестировал. У меня нет специальной конфигурации для static .

Спасибо за подтверждение. Установка minify на false не решила для меня проблему.

Но у меня это работает. Под apache я переключился на false и все стало нормально работать.

Я могу это проверить.

14 мая 2020 г. в 13:30 julpec [email protected] написал:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (и Джон, очевидно): кто-то из вас
в состоянии проверить этот PR, чтобы увидеть, работает ли он для них? я мог бы
как независимая проверка, если возможно.

Хорошо, чтобы я протестировал. Специальной конфигурации для статики у меня нет.

Спасибо за подтверждение. Установка minify на false не решила
проблема для меня.

Но у меня это работает. Под apache перешел на false и все
начал работать нормально.

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Также подтверждение -> установка minify на false корректно работала в моей системе.
(вероятно, в прошлый раз я не перезапускал службу правильно).

14 мая 2020 г. в 13:30 julpec [email protected] написал:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (и Джон, очевидно): кто-то из вас
в состоянии проверить этот PR, чтобы увидеть, работает ли он для них? я мог бы
как независимая проверка, если возможно.

Хорошо, чтобы я протестировал. Специальной конфигурации для статики у меня нет.

Спасибо за подтверждение. Установка minify на false не решила
проблема для меня.

Но у меня это работает. Под apache перешел на false и все
начал работать нормально.

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Но у меня это работает. Под apache я переключился на false и все стало нормально работать.
Также подтверждение -> установка minify на false корректно работала в моей системе.

@julpec , @ashishhari : установка обходной путь .
Теперь есть надежда увидеть, исправит ли # 4002 ошибку при minify = true.

Процедура будет следующей, делайте это, только если все шаги вам понятны:

Начните копировать ошибку:

  • убедитесь, что minify = true в settings.json
  • перезапустить Etherapd
  • посетите страницу Etherpad и убедитесь, что значки панели инструментов не отображаются

Попробуйте исправить:

  • держать minify = true в settings.json
  • примените # 4002 (делайте это, только если вам это удобно)
  • перезапустить Etherpad
  • посетить EtherPad страницу и убедитесь, что значки панели инструментов теперь показываются корректно

Я бы хотел, но не знаю, как применять PR :(

Спасибо @muxator , протестирую в течение часа.

Ого, я бы никогда не придумал такое исправление! Это помешательство.

git remote add mux https://github.com/muxator/etherpad-lite/
git fetch mux
git checkout mux/fix/fonts-behind-reverse-proxy

Для тех, кто тоже хочет протестировать ..

после тестирования не забудьте git checkout develop иначе вы попадете в устаревшую ветку muxs

спасибо протестирую сегодня днем

Хм, я думаю, что что-то не очень производительное @muxator .. Я вижу ~ 54 запроса против ~ 49 (на текущем develop ) - Обратите внимание, что у меня есть плагины, дающие дополнительные запросы. Таким образом, этот PR будет регрессом производительности загрузки страницы, чтобы удовлетворить недокументированный / неподдерживаемый вариант использования, который, IMHO, неприемлем.

image

Обратите внимание на несколько запросов к одному и тому же файлу ... :( Это по умолчанию, но несколько запросов для одного и того же файла - это не то решение, которое мы ищем.

Я думаю, что множественный запрос исходит из другого iframe. И главная страница, и редактор iframe нуждаются в шрифте, всегда так было, нет?

afaik cleanCSS был использован для решения этой проблемы @seballot

это всегда было так нет?

Да, так было всегда.

Я думаю, cleanCss был больше, чтобы избежать загрузки каждого частичного css (pad / popups.css, pad / editbar.css, pad / chat.css ...), а вместо этого загружать только один pad.css

Но при использовании iframe браузер обязан дважды запрашивать каждый файловый ресурс с iframe. Но второй вызов должен использовать локальный кеш («загружается из кеша»).

Я применил запрос на перенос, и он работает без проблем (с apache)

Спасибо @julpec.

Этим вечером я попытаюсь рассмотреть количество запросов, поднятых @JohnMcLear . Если ничего не происходит, сливаю PR.

Потрясающий мультиплексор TNX

Есть ли способ загрузить файлы HAR где-нибудь в Github? Я протестировал # 4002 и готов поделиться записями, но не знаю, куда их загрузить.

Общие элементы:

  • посетил http: // localhost : 9001 / p / ciao
  • нет обратного прокси
  • режим производства: ложь
  • начать с пустым кешем браузера

Переменные:

  • версия: 4816785aef45 против # 4002
  • кеш: холодный ( первая загрузка ) vs горячий (> = 2-я загрузка )
  • minify: true vs false
  • браузер: хром 81 против Firefox 76

Это четыре двоичные переменные -> 2 ^ 4 = 16 возможностей .
На это ушло много времени!

Вот более подходящие случаи:
| Описание | текущая разработка (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, уменьшенный, первая загрузка | 34 запроса
1,61 МБ
Передано 1,61 МБ | 36 запросов
1,61 МБ
1,53 МБ передано |
| Firefox, минимизированный, горячий кеш | 29 запросов
1,12 МБ
216 КБ передано | 31 запрос
1,18 МБ
216 КБ передано |
| Хром, уменьшен, первая загрузка | 44 запроса
2,0 МБ
1,5 МБ передано | 109 richieste
3,0 МБ
1,1 МБ передано |
| Хром, минифицированный, горячий кеш | 45 запросов
2,2 МБ
5,7 КБ передано | 129 запросов
4,7 МБ
4,7 КБ передано |

Итог:

  • Chrome и Firefox имеют совершенно другой способ измерения своего трафика
  • PR # 4002 вводит больше запросов к серверу
  • Коэффициент попадания в кеш улучшается : переданный столбец уменьшается!
  • Время загрузки остается неизменным, в пределах шума измерения

Это тоже были мои выводы. Я также потратил время на исследование инструментов профилирования производительности скорости загрузки страниц (помимо инструментов разработчика) и решил, что если инструменты разработчика не дают мне значительного отклонения от среднего значения, то результаты были достаточно подходящими для нашего приложения.

Уменьшение общего размера передачи - это, безусловно, хорошо, но накладные расходы на HTTP-запросы могут быть дорогими из-за задержки. Мы можем объединить это, но помните, что, когда мы переписываем интерфейс (что кажется неизбежным из-за всего встроенного JS, который в конечном итоге необходимо будет переместить), то это область, которую мы должны стремиться улучшить.

Все сказано, Etherpad великолепен по сравнению с большинством других в области htis, за исключением документов Google, которые являются золотым стандартом для абсолютно шокирующе быстрого «времени для редактирования», которое в этом мире является королем, а не «загрузкой конца страницы».

Итак, TLDR; Объедините @muxator - этот поток существует как ресурс для тех, кто хочет оптимизировать экземпляры Etherpad, а НЕ во вложенных папках.

отличная работа !

+1 tnx!

: +1:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги