# Установка Nginx

<figure><img src="https://1083642673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV74PkAtN2kO6QcoaSgpR%2Fuploads%2Fxz8DQ5UPOdo0HwJYJJvr%2FNginx.png?alt=media&#x26;token=734107d1-0dff-4998-8efa-8f87a527cf9d" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Перед установкой убедитесь, что у Вас не установлен **Apache2.**
{% endhint %}

## Установка веб-сервера <a href="#ustanovka-veb-servera" id="ustanovka-veb-servera"></a>

Его установка крайне проста, используйте следующую команду:

```
apt-get install nginx -y
```

## Настройка Nginx <a href="#nastroika-nginx" id="nastroika-nginx"></a>

Вам необходимо перейти в каталог **/etc/nginx/sites-available** и создать файл типа «**site.conf**».

Вставьте в конфиг и отредактируйте следующее:

{% tabs %}
{% tab title="site.conf" %}

```
server {
    listen       *:80;
    server_name  qwins.co; # домен сайта
    client_max_body_size 1000M; # максимальный размер файла, переданного через сайт
    error_page 404 = @notfound;
    location / {
        root   /home/site/qwins; # путь до сайта
        try_files $uri $uri.html $uri/ @extensionless-php;
        index  index.html index.php;
    }
    # Подключения PHP, если не нужен, то стираем с 13 по 21 строку
    location ~ \.(php|html|htm)$ {
        try_files $uri =404;
        root   /home/site/qwins; # путь до сайта
        fastcgi_pass unix:/run/php/php7.0-fpm.sock; # путь до php 
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include /etc/nginx/fastcgi_params;
    }
}
```

{% endtab %}

{% tab title="Second Tab" %}

{% endtab %}
{% endtabs %}

Перезагружаем **Nginx**:

```
service nginx restart
```

## Примечания к PHP <a href="#primechaniya-k-php" id="primechaniya-k-php"></a>

{% hint style="info" %}
**PHP** не обязателен для работы с **Nginx**. Это примечание важно только для тех, чей сайт использует **PHP**.
{% endhint %}

## Подключение SSL-сертификата к Nginx <a href="#podklyuchenie-ssl-sertifikata-k-nginx" id="podklyuchenie-ssl-sertifikata-k-nginx"></a>

{% hint style="info" %}
Подключение **SSL** не обязательно, осуществляется при его наличии и Вашем желании.
{% endhint %}

```
server {
    listen 80;
    server_name qwins.co; # домен сайта
    return 301 https://$server_name$request_uri; # редирект с http на https
}

server {
    listen 443 ssl http2;
    server_name qwins.co; # домен сайта

    root /var/www/qwins; # путь до сайта
    index index.html index.htm index.php; # индексные страницы

    access_log /var/log/nginx/qwins.app-access.log; # логи успешных подключений
    error_log  /var/log/nginx/qwins.app-error.log error; # логи ошибочных подключений

    # если требуется что-то отключить, вместо пути до файла пишем «off»

    client_max_body_size 1000m; # максимальный размер файла, переданного через сайт
    client_body_timeout 120s; # значение тайм-аута

    sendfile off; # после включения Nginx будет отправлять заголовки HTTP-ответов одним пакетом, а не отдельными частями.

    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/qwins.co/fullchain.pem; # публичный ключ сертификата
    ssl_certificate_key /etc/letsencrypt/live/qwins.co/privkey.pem; # приватный ключ сертификата
    ssl_session_cache shared:SSL:10m; # объем кеша сессий SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    ssl_prefer_server_ciphers on; # уменьшает время загрузки страниц сайта

    location ~ \.(php|html|htm)$ {
try_files $uri =404;
root /var/www/qwins; # путь до сайта
fastcgi_pass unix:/run/php/php7.2-fpm.sock; # путь до php
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
    }
}
```

Перезагружаем **Nginx**:

```
service nginx restart
```

## Проверка на Apache2 <a href="#proverka-na-apache2" id="proverka-na-apache2"></a>

Если **Nginx** поставить c **Apache2**, то они будут конфликтовать из-за порта 80. Так что необходимо удалить один из в**еб-серверов**. Проверяем установлен ли **Apache2:**

```
service apache2 status
```

{% hint style="info" %}
Если не будет огромного сообщения с информацией, значит он не установлен.
{% endhint %}

Если **Apache2** установлен, нужно его удалить:

```
apt-get remove --purge apache2* -y
```

## Удаление Nginx <a href="#udalenie-nginx" id="udalenie-nginx"></a>

Для того, чтобы полностью удалить **Nginx** c сервера, для начала его необходимо остановить:

```
service nginx stop
```

А затем прописать команду, которая безвозвратно его удалит:

```
apt-get remove --purge nginx*
```
