• Почему файл скачивается при загрузке страницы?

    Zeben
    @Zeben
    Ruby/Rails full-stack разработчик
    Если Вам нужно встроить документ в страницу, то можете это сделать через Google Docs (через него сможете рендерить любой файл, доступный на сервере по прямой ссылке):
    <iframe class="doc" src="https://docs.google.com/gview?url=http://direct.link/file.doc&embedded=true"></iframe>

    pwFx2f7.png
    Ответ написан
    Комментировать
  • Мета тег Вьюпорт что написать?

    Zeben
    @Zeben
    Ruby/Rails full-stack разработчик
    Мне вот это помогает:
    <meta name="viewport" content="width=device-width, initial-scale=1">

    Если что-то понавороченнее, то там уже медиа-запросы... Или flexbox'ы... Или grid'ы.
    Ответ написан
    1 комментарий
  • Можно ли установить Discorce на одном VPS для нескольких сайтов?

    Zeben
    @Zeben
    Ruby/Rails full-stack разработчик
    Без проблем. Nginx умеет проворачивать такие вещи, проксируя с разных DNS на целевой IP-адрес с разными сервисами. Есть как минимум 2 варианта использования Nginx в этих целях:
    1. Reverse proxy на локальные IP-адреса;
    2. Reverse proxy на UNIX-сокет.
    При помощи Nginx можно разнести Ваши форумы, к примеру, по разным поддоменам.
    Допустим, Вы арендуете домен mydisc.com и Вы хотите, чтобы один форум (сервис) был на foo.mydisc.com, а второй, собственно, на bar.mydisc.com. Также допустим, что Вы уже арендуете VPS с выделенным IP (пусть будет 11.22.33.44).
    Также допустим, что Вы уже создали свои домены и привязали их к своему VPS.
    Тогда в Nginx создаётся файл конфигурации (упрощено):
    /etc/nginx/nginx.conf
    user sample;
    worker_processes 4;
    http {
      include mime.types;
      ...
      # если используете HTTPS - подключаете строки ниже:
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
      ssl_prefer_server_ciphers on;
      ssl_session_cache   shared:SSL:20m;
      ssl_session_timeout 20m;
      ssl_buffer_size 6k;
    
      # здесь рекурсивно подключаете все свои сервисы
      include /etc/nginx/servers-enabled/*;
    }


    Создаёте папку /etc/nginx/servers-available/ и создаёте в ней, к примеру, два файла: foo и bar. Каждый из них будет содержать что-то вроде:
    foo
    upstream foo {
     # здесь есть 2 способа проксировать своё приложение: UNIX-сокет (puma умеет такое делать)...
      server unix:/srv/http/foo/shared/sockets/puma.sock fail_timeout=0;
      # ... или адрес:
      server 127.0.0.1:9292 fail_timeout=0;
    }
    
    server {
      listen 80;
      server_name foo.mydisc.com;
      # если используете HTTPS - редирект
      return https://foo.mydisc.com$request_uri; 
    }
    
    server {
      listen 443 ssl http2;
      server_name foo.mydisc.com;
      root /srv/http/foo/public;
    
      ssl_certificate /etc/certs/mycert/fullchain.pem;
      ssl_certificate /etc/certs/mycert/privkey.pem;
    
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      add_header Strict-Transport-Security 'max-age=1209600'; # HSTS на 1 год
      
      location {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_pass http://foo;
      }
    
      location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt { # папка с ассетами
        gzip_static on;
        expires max;
        add_header Cache-Control public;
      }
      
      # можете настроить под себя
      # error_page 500 502 503 504 /500.html;
      # client_max_body_size 4G;
      # keepalive_timeout 70;
    }
    bar
    upstream bar {
      # здесь есть 2 способа проксировать своё приложение: UNIX-сокет (puma умеет такое делать)...
      server unix:/srv/http/bar/shared/sockets/puma.sock fail_timeout=0;
      # ... или адрес:
      server 127.0.0.1:<b>9393</b> fail_timeout=0;
    }
    
    server {
      listen 80;
      server_name bar.mydisc.com;
      # если используете HTTPS - редиректите
      return https://bar.mydisc.com$request_uri; 
    }
    
    server {
      listen 443 ssl http2;
      server_name bar.mydisc.com;
      root /srv/http/bar/public;
    
      ssl_certificate /etc/certs/mycert/fullchain.pem;
      ssl_certificate /etc/certs/mycert/privkey.pem;
    
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      add_header Strict-Transport-Security 'max-age=1209600'; # HSTS на 1 год
      
      location {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_pass http://bar;
      }
    
      location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt { # папка с ассетами
        gzip_static on;
        expires max;
        add_header Cache-Control public;
      }
      
      # можете настроить под себя
      # error_page 500 502 503 504 /500.html;
      # client_max_body_size 4G;
      # keepalive_timeout 70;
    }

    Идёте в /etc/nginx/servers-enabled и линкуете по желанию:
    ln -s ../servers-available/foo .
    ln -s ../servers-available/bar .

    Проверяете синтаксис...
    # nginx -t
    И перезапускаете Nginx.

    Собственно и всё. Можете хоть 10 сервисов держать на VPS и разнести их на разные поддомены - все будут висеть на одном IP и не будут друг с другом драться.
    Ответ написан
    4 комментария