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

    @MrSlam Автор вопроса
    Переделал весь конфиг Nexcloud, отправив его полностью через nginx (до этого он только проксировал его на апач). Взял конфиг, указанный в документации: https://docs.nextcloud.com/server/latest/admin_man...
    В нем можно спокойно отключить строку
    add_header X-Frame-Options                      "SAMEORIGIN"    always;

    и тогда при проверке curl -I поддомен.домен строки x-frame-options: SAMEORIGIN не наблюдается.
    Однако, при попытке открыть документ - в консоли все так же: efused to display 'доменофиса' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
    Если проверить домен офиса, то выдает:
    $ curl -I https://доменофиса                  
    HTTP/2 302 
    server: nginx
    date: Sat, 08 Oct 2022 18:06:17 GMT
    content-type: text/html
    content-length: 183
    location: /Auth.aspx?refererurl=https%3a%2f%2fдоменофиса%2fDefault.aspx
    x-aspnet-version: 4.0.30319
    cache-control: private
    x-frame-options: SAMEORIGIN

    и где его убрать - уже не знаю.
    По вашей наводке я проверил 2 варианта, которые нашел:
    1. Пробовал в nginx в каждый хост добавлять proxy_hide_header X-Content-Type-Options;
    2. Закомментировал строку в файле server/lib/private/legacy/OC_Response.php
    header('X-Frame-Options: SAMEORIGIN'); // Disallow iFraming from other domains

    Ни одно, ни другое не помогло. Думаю, что надо где-то в стороне Офиса смотреть, но все не найду где.
  • Как подружить nginx docker (vaultwarden) и certbot?

    @MrSlam Автор вопроса
    Спасибо! Может кому еще пригодится.
    Переделал конфиг:
    Сам контейнер запускаю так:
    sudo docker run -d --name vaultwarden -e SIGNUPS_ALLOWED=false \
    -v /vw-data/:/data -e WEBSOCKET_ENABLED=true \
    -p 127.0.0.1:8080:80 -p 127.0.0.1:3012:3012 \
    --restart on-failure vaultwarden/server:latest

    И конфиг nginx выглядит таким образом:
    server {
       listen      80;
       server_name под.домен.ру;
       return      301 https://$server_name$request_uri;
    }
    
    server {
        server_name под.домен.ру; # managed by Certbot
    
        location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $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-Proto $scheme;
      }
    
      location /notifications/hub {
        proxy_pass http://localhost:3012;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
      }
    
      location /notifications/hub/negotiate {
        proxy_pass http://localhost:8080;
      }
    
      # Optionally add extra authentication besides the ADMIN_TOKEN
      # If you don't want this, leave this part out
      location /admin {
        # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
        auth_basic "Private";
        auth_basic_user_file /path/to/htpasswd_file;
    
        proxy_set_header Host $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-Proto $scheme;
    
        proxy_pass http://localhost:8080;
      }
    
      location /.well-known/acme-challenge {
        root /var/www/letsencrypt;
      }
        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl http2; # 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
    }