Задать вопрос
@MrSlam
местами сисадмин

Как исправить ошибку X-Frame-Options в связке Nextcloud Onlyoffice при открытии документов?

Имеется:
Сервер 1, на котором развернут Nextcloud (смотрит в интернет, на нем же nginx)
Сервер 2, на котором развернут Onlyoffice (в докере, стандартным скриптом установки)
Оба сервера в одной сети.
Для каждого сервиса есть свое доменное имя. Разруливает все nginx. Конфиг:
upstream docservice {
  server локальный ип офиса;
}

map $http_host $this_host {
    "" $host;
    default $http_host;
}

map $http_x_forwarded_proto $the_scheme {
     default $http_x_forwarded_proto;
     "" $scheme;
}

map $http_x_forwarded_host $the_host {
    default $http_x_forwarded_host;
    "" $this_host;
}

map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}

map $request_uri $header_x_frame_options {
  ~*^/(ds-vpath|favicon\.ico|products\/files\/share\.aspx|products\/files\/saveas\.aspx|products\/files\/filechoice\.aspx|products\/files\/doceditor\.aspx|thirdparty\/plugin) "";
  default "SAMEORIGIN";
}

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;



server {
    server_name поддоменNC.домен;
    access_log /var/log/nginx/-access.log;
    error_log /var/log/nginx/-error.log;
    client_max_body_size 0;
#уже не знаю куда вставить:
    location ~* ^/ds-vpath/ {
                rewrite /ds-vpath/(.*) /$1  break;
                proxy_pass http://локальный ип офиса;
                proxy_redirect     off;

                client_max_body_size 100m;

                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Host $the_host/ds-vpath;
                proxy_set_header X-Forwarded-Proto $the_scheme;
        }
location / {
    proxy_pass http://локалхост:8080; #апач доразруливает
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/*/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/*/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    server_name поддоменОО.домен;
    access_log /var/log/nginx/-access.log;
    error_log /var/log/nginx/-error.log;
    server_tokens off;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/*/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/*/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    root /usr/share/nginx/html;

    ssl_verify_client off;

    ssl_session_cache  builtin:1000  shared:SSL:10m;

location / {
    proxy_pass http://локальный ип офиса;
   # proxy_set_header Host $host;
   # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   # proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    }

}

При попытке открыть документ в Nextcloud, браузер выдает Отказано в подключении к сайту, и в консоли появляется ошибка:
Загрузка «*/ds-vpath/7.2.0-204/web-apps/apps/documenteditor/main/index_loader.html?_dc=7.2.0-204&lang=ru&customer=ONLYOFFICE&frameEditorId=iframeEditor&compact=true&parentOrigin=*&uitheme=theme-classic-light» во фрейме запрещена директивой «X-Frame-Options», установленной в «SAMEORIGIN».

На сервере офиса nginx не установлен. (в образах он вроде есть, но там настроек я не нашел)
В связи с этим вопрос:
Что и куда нужно прописать, чтобы документы открывались в Nextcloud?
  • Вопрос задан
  • 497 просмотров
Подписаться 3 Средний Комментировать
Решения вопроса 1
@MrSlam Автор вопроса
местами сисадмин
Сам спросил, сам и отвечаю:
Я устанавливал не просто Onlyoffice Docserver, а Community Server, поэтому в настройках NextCloud указывал https://доменОО/ds-vpath/
В документации только российского разработчика представлена информация, что надо добавить
map $request_uri $header_x_frame_options {
  ~*^/(ds-vpath|favicon\.ico|products\/files\/share\.aspx|products\/files\/saveas\.aspx|products\/files\/filechoice\.aspx|products\/files\/doceditor\.aspx|thirdparty\/plugin) "";
  default "SAMEORIGIN";
}


в /etc/nginx/sites-available/onlyoffice
Однако, в Onlyoffice толи линк нормально не проставлен, толи конфиг вставлен на прямую, но секция map $request_uri $header_x_frame_options хранится только в /etc/nginx/sites-enable/onlyoffice.
Так что решение:
1. Открываем докер образ CommunityServer
2. в /etc/nginx/sites-enable/onlyoffice в секцию map $request_uri $header_x_frame_options добавляем ds-vpath (как у меня выше)
3. перегружаем nginx в этом образе: systemctl reload nginx
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Adler_lug
@Adler_lug
Гуглить пробовали? По запросу "x-frame-options sameorigin nextcloud" полно результатов.
Первый попавшийся
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы