Загрузка файла Seafile не работает, даже после установки переменной "FILE_SERVER_ROOT"
Я пытаюсь заставить Seafile работать за обратным прокси-сервером nginx. Я следовал этому: http://manual.seafile.com/deploy/deploy_with_nginx.html вместе с этим: http://manual.seafile.com/deploy/https_with_nginx.html.
Моя конфигурация выглядит следующим образом:
- Nginx работает для vhost "cloud.mydomain.tld"
- Seafile и Seahub (в режиме fastcgi) работают на своих портах по умолчанию
Мой seahub_settings.py выглядит так:
HTTP_SERVER_ROOT = 'https://cloud.mydomain.tld/seafhttp' -- I added this to try it FILE_SERVER_ROOT = 'https://cloud.mydomain.tld/seafhttp' SECRET_KEY = "12345678-1234-1234-1234-1234567890123456" DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'seahub-db', 'USER': 'seafile', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': { 'init_command': 'SET storage_engine=INNODB', } } }
Моя конфигурация nginx:
### Cloud ### # No-SSL redirect server { listen 80; server_name cloud.mydomain.tld; return 301 https://$server_name$request_uri; } # SSL server { listen 443 ssl; server_name cloud.mydomain.tld; ssl_certificate /etc/letsencrypt/live/cloud.mydomain.tld/cert.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.mydomain.tld/privkey.pem; location / { fastcgi_pass 127.0.0.1:8000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param REMOTE_ADDR $remote_addr; access_log /var/log/nginx/seahub.access.log; error_log /var/log/nginx/seahub.error.log; fastcgi_read_timeout 36000; } location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; client_max_body_size 0; proxy_connect_timeout 36000s; proxy_read_timeout 36000s; proxy_send_timeout 36000s; send_timeout 36000s; } location /media { root /home/cloud/seafile-server-latest/seahub; } }
- Это должно быть все важно.
Итак, теперь, когда я удаляю свой старый seahub_settings.pyc, запускаю seahub (в режиме fastcgi, конечно), указываю браузер на мою библиотеку и пытаюсь загрузить что-то, я получаю следующее сообщение об ошибке в консоли разработчика F12:
main.ad03aea1e16e.js:215 Mixed Content: The page at 'https://cloud.mydomain.tld/#my-libs/lib/12345678-1234-1234-1234-123456789012' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://cloud.mydomain.tld:8082/upload-aj/12345678-1234-1234-1234-123456789012'. This request has been blocked; the content must be served over HTTPS.
send @ main.ad03aea1e16e.js:215
Это означает, что SeaHub все еще пытается подключиться к "старой" службе загрузки, которая, конечно, больше не работает. До сих пор я не нашел никакого решения этой проблемы.
2 ответа
Я только что нашел ваш вопрос с той же проблемой.
Это просто: в seahub-db есть constance_config (с MySQL, то же самое относится и к sqlite), который записывает конфигурацию и перезаписывает простые файлы конфигурации.
Эта конфигурация может быть изменена из консоли администратора (вверху справа), или вы можете просто обрезать эту таблицу, чтобы получить ее заново.
Это новая "функция", начиная с 5.0.0 ( http://manual.seafile.com/config/index.html).
С уважением, Жюльен
Итак, после нескольких часов борьбы я решил переустановить seafile. После удаления всего в его каталоге, а также всех записей mysql я настроил его снова. На этот раз я отредактировал seahub_settings.py
-file, ДО того, как я запустил seahub в первый раз, и теперь он работает. Возможно, SeaHub хранит некоторые кэши конфига где-то еще, чем в seahub_settings.pyc
, Кажется, это какая-то ошибка...?