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

Страницы приложения PHP (Owncloud), запрашивающие неверный путь для активов

У меня установлен VPS с php-fpm и nginx (с ssl). Я уже настроил Tiny Tiny RSS, и он отлично работает. Однако недавно я попытался настроить Owncloud и сразу же наткнулся на препятствие.

Я посетил индексную страницу, чтобы выполнить первоначальную настройку, и совершенно не было никакого стиля. Я заглянул в консоль Firefox и увидел несколько ошибок 404. Присмотревшись, я увидел, что все пути к активам были неправильными. Вместо того, чтобы запрашивать http://mydomain.com/owncloud/some/important/component.js, он запросил http://mydomain.com/usr/share/nginx/html/owncloud/some/important/component.js.

Казалось бы, php делает что-то не так при обработке страниц. У меня нет этой проблемы с Tiny Tiny RSS, поэтому я предполагаю, что это как-то связано со способом написания Owncloud.

Я предполагаю, что мне нужно изменить ключ php.ini. Любые идеи?

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

            listen 443 ssl;
            ssl_certificate /var/ssl/secret/sauce.key
            ssl_certificate_key /var/ssl/secret/sauce.key;
            server_name localhost 127.0.0.1 mydomain.com;
            root /usr/share/nginx/html;
            index index.html index.htm index.php;
            client_max_body_size 1000M;

            location / {
                    try_files $uri $uri/ @webdav =404;
            }

            location ~ \.php$ { 
                    include fastcgi_params;
                    fastcgi_index index.php;
                    try_files $1 = 404;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    fastcgi_param HTTPS on;
                    fastcgi_pass 127.0.0.1:9000;
            }

            location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) {
                    deny all;
            }

            location @webdav {
                    fastcgi_split_path_info ^(.+\.php)(/.*)$;
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    fastcgi_param HTTPS on;
                    include fastcgi_params;
            }

Я понимаю, что это не полная конфигурация, которую рекомендует документация Owncloud, но обычно мне нравится получать минимальную рабочую конфигурацию и работать, чтобы узнать, как все работает. Просматривая параметры конфигурации, которые я оставил, похоже, что ничего не влияло на обработку php, поэтому я предполагаю, что все в порядке. В противном случае я хотел бы знать, какую директиву nginx мне не хватает и почему это важно.

Создайте новый виртуальный хост для owncloud и просто отредактируйте корень и восходящий поток (либо sock, либо порт). У меня уже есть работающий сервер owncloud, и он отлично работает.

Конфигурация Nginx для owncloud

заменить root линия и server в upstream

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

РЕДАКТИРОВАТЬ

О ssl, одном IP и одном виртуальном сервере:

Не совсем, это зависит от того, для чего был куплен ваш ssl, если это ssl для одного домена, например, example.com или store.example.com, у вас может быть столько сайтов, сколько нужно на одном IP-адресе, но SSL будет действителен только для того одного домена, для которого вы его купили, если вы не купили SSL с дикой картой, в этом случае он может поддерживать *.example.com

в любом случае, на моем сервере тоже есть SSL, и это только для domain.com и www.domain.com, Я использовал его на своем облачном сервере, который был размещен на cloud.domain.com Единственным недостатком этого является то, что вы получаете это предупреждение на желтой странице, потому что домен не соответствует тому, для которого был куплен ssl, я говорю браузеру игнорировать это предупреждение и сохранять исключение, и это то же самое для синхронизации клиент, он сказал мне, хочу ли я игнорировать предупреждение или нет, и он работает нормально.

Если вы не хотите сталкиваться с этим предупреждением, тогда да, вам нужно создать собственный облачный сервер под тем же виртуальным хостом, не из-за IP-адреса, а из-за имени, для которого был куплен ssl.

Скажите, что вам нужно, и я вам помогу.

Я предполагаю, что мне нужно изменить ключ php.ini. Любые идеи?

Нет, ваше приложение, вероятно, настроено неправильно - PHP Owncloud генерирует эти пути. Убедитесь, что вы правильно настроили URL-путь в Owncloud.