# 【Глава 5】 Создание веб-сайта ## 5.1 Зачем нужен веб-сайт? Начинающие пользователи могут задаться вопросом: зачем создавать веб-сайт для обхода блокировок? Я не программист, это же сложно? Начнём с первого вопроса. Веб-сайт нужен для того, чтобы: 1. Получить действующий SSL-сертификат (это очень важно). 2. Обеспечить маскировку трафика (fallback) и защититься от атак, направленных на выявление VPN-серверов. 3. Создать сайт-прикрытие (например, блог, облачное хранилище, медиа-портал, игровой сайт), который будет отображаться при прямом доступе к серверу, делая использование VPN менее заметным. Теперь ответим на второй вопрос: 1. В этой статье мы создадим максимально простой веб-сайт, состоящий из **одного HTML-файла** и работающий на веб-сервере **Nginx**, чтобы решить поставленные выше задачи. Это очень просто. 2. Этот веб-сайт не обязательно должен быть просто прикрытием. Вы можете развивать его и превратить в полноценный проект. Всё зависит от ваших желаний и возможностей. 3. Создание сайта-прикрытия и его продвижение — это отдельная большая тема, которая выходит за рамки этой статьи. Если вам интересно, вы можете найти информацию об этом в интернете. ## 5.2 Подключение к VPS и установка Nginx 1. В этом разделе мы будем использовать команды, которые уже были подробно рассмотрены ранее. Если вы что-то не понимаете, вернитесь и перечитайте предыдущие главы. ```shell sudo apt update && sudo apt install nginx ``` 2. После завершения установки Nginx запустится автоматически. Откройте браузер на своём компьютере и введите адрес `http://100.200.300.400:80`. Если вы увидите страницу, как на скриншоте ниже, значит, Nginx работает. ![Стандартная страница Nginx](./ch05-img01-nginx-default-running.png) 3. Если вы не видите страницу Nginx, возможно, вам нужно настроить Uncomplicated Firewall (UFW), стандартный брандмауэр в Debian, чтобы разрешить трафик на портах HTTP (80) и HTTPS (443). a. Чтобы проверить, введите: ```shell sudo ufw status ``` b. Если вывод команды такой, как показано ниже, это означает, что порты 80 и 443 закрыты. Выполните действия, описанные в пункте c. ```shell Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) ``` c. Чтобы открыть порты 80 и 443 для Nginx в UFW, выполните команду: ```shell sudo ufw allow 'Nginx Full' ``` d. Снова проверьте статус UFW, выполнив команду из пункта a. Если вы видите вывод, как показано ниже, значит, трафик для Nginx разрешён, и вы должны увидеть стандартную страницу Nginx. ```shell Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere Nginx Full ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6) ``` ## 5.3 Создание простой веб-страницы 1. Базовые команды Linux: | Номер | Команда | Описание | | :----: | :-------- | :------------------------ | | `cmd-10` | `mkdir` | Создание папки | | `cmd-11` | `systemctl reload` | Перезагрузка службы | 2. Важные файлы конфигурации Linux: | Номер | Путь к файлу | Описание | | :------ | :-------------------- | :------------------------- | | `conf-02` | `/etc/nginx/nginx.conf` | Настройки Nginx | 3. Создайте папку `/home/vpsadmin/www/webpage/` для вашего сайта и файл `index.html` внутри неё: ```shell mkdir -p ~/www/webpage/ && nano ~/www/webpage/index.html ``` ::: warning Если вы используете имя пользователя, отличное от `vpsadmin`, обратите внимание на символ `~` в этой команде (это важно для 5-го шага): - Для пользователей, **отличных от `root`**: `~` эквивалентно `/home/имя_пользователя`. - Для пользователя **`root`**: `~` эквивалентно `/root`. ::: 4. Скопируйте следующий код в файл `index.html` и сохраните его (`Ctrl+O`, `Enter`), затем выйдите из редактора (`Ctrl+X`): ```html
Be bold in stating your key points. Put them in a list:
Improve your image by including an image.
Add a link to your favorite Web site. Break up your page with a horizontal rule or two.
Finally, link to another page in your own Web site.
© Wiley Publishing, 2011
``` 5. Дайте другим пользователям право на чтение этого файла: ```shell chmod -R a+r . ``` 6. Отредактируйте файл `nginx.conf` и перезапустите Nginx, чтобы он открывал созданную нами страницу `index.html` при обращении к порту `80`. 1. Отредактируйте файл `nginx.conf`. ```shell sudo nano /etc/nginx/nginx.conf ``` 2. Добавьте следующий блок кода внутрь блока `http{}` и сохраните изменения (`Ctrl+O`, `Enter`), затем выйдите из редактора (`Ctrl+X`). (Не забудьте заменить доменное имя на ваше реальное доменное имя, включая поддомен). ``` server { listen 80; server_name поддомен.ваш_домен.com; root /home/vpsadmin/www/webpage; index index.html; } ``` ::: warning Важно! Как уже говорилось в 3-м шаге, убедитесь, что путь `/home/vpsadmin/www/webpage` соответствует реальному пути к вашему файлу. ::: 3. Перезагрузите Nginx, чтобы применить изменения. ```shell sudo systemctl reload nginx ``` 4. Весь процесс настройки показан на гифке ниже: ![Настройка веб-сайта](./ch05-img02-nginx-conf-full.gif) 5. Теперь, если вы откроете в браузере адрес `http://поддомен.ваш_домен.com`, вы должны увидеть созданную нами страницу: ![Веб-сайт работает](./ch05-img03-nginx-http-running.png) ## 5.4 Распространённые ошибки Вообще, если вы внимательно следовали инструкциям, ошибок быть не должно. Однако на этом этапе многие пользователи сталкиваются с проблемами. В чём же дело? Ответ прост: **невнимательность**. Здесь возможны только две ошибки, и обе они связаны с невнимательностью. **Ошибки:** - Путь `/home/vpsadmin/www/webpage` в файле `nginx.conf` не соответствует реальному пути к файлу `index.html`. Nginx не может найти файл. - Путь указан верно, но у Nginx нет прав на чтение файла. **Причины:** - Вы работаете не под пользователем `root`, но скопировали команды из статьи без изменений (как будто списали домашнее задание вместе с именем одноклассника). - Вы работаете под пользователем `root`. Если у вас возникли проблемы, вернитесь к разделу 5.3 и внимательно перечитайте пункты 3 и 6.2. ::: warning В предыдущих главах мы много говорили о важности использования пользователя, отличного от `root`, и вся статья написана с учётом этого. Поэтому проблемы, связанные с использованием `root`, не рассматриваются в рамках этой статьи. Однако я уверен, что те, кто всё-таки работает под `root`, достаточно опытны и смогут решить эти проблемы самостоятельно. ::: ## 5.5 Ваш прогресс Первый компонент Xray — веб-сайт — готов. Давайте перейдём ко второму компоненту — SSL-сертификату! > ⬛⬛⬛⬛⬛⬜⬜⬜ 62.5%