Настройка Nginx веб-сервера — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Настройка Nginx веб-сервера = == 1. Подготовка системы == * Войдите в систему под учетной зап…»)
 
 
(не показана 1 промежуточная версия этого же участника)
Строка 11: Строка 11:
  
 
1. Обновите список пакетов:
 
1. Обновите список пакетов:
<code>
+
<pre>sudo apt update</pre>
sudo apt update
 
</code>
 
  
 
2. Установите Nginx:
 
2. Установите Nginx:
<code>
+
<pre>sudo apt install nginx</pre>
sudo apt install nginx
 
</code>
 
  
 
3. Запустите и включите автозапуск Nginx:
 
3. Запустите и включите автозапуск Nginx:
<code>
+
<pre>sudo systemctl start nginx</pre>
sudo systemctl start nginx
+
<pre>sudo systemctl enable nginx</pre>
sudo systemctl enable nginx
 
</code>
 
  
 
=== Для CentOS/RHEL/Fedora ===
 
=== Для CentOS/RHEL/Fedora ===
  
 
1. Установите Nginx:
 
1. Установите Nginx:
<code>
+
<pre>sudo yum install nginx</pre>
sudo yum install nginx
 
</code>
 
 
# или для новых версий
 
# или для новых версий
<code>
+
<pre>sudo dnf install nginx</pre>
sudo dnf install nginx
 
</code>
 
  
 
2. Запустите и включите автозапуск:
 
2. Запустите и включите автозапуск:
<code>
+
<pre>sudo systemctl start nginx</pre>
sudo systemctl start nginx
+
<pre>sudo systemctl enable nginx</pre>
sudo systemctl enable nginx
 
</code>
 
  
 
== 3. Проверка установки ==
 
== 3. Проверка установки ==
Строка 60: Строка 48:
  
 
1. Создайте директорию для вашего сайта:
 
1. Создайте директорию для вашего сайта:
<code>
+
<pre>sudo mkdir -p /var/www/example.com/public_html</pre>
sudo mkdir -p /var/www/example.com/public_html
 
</code>
 
  
 
2. Создайте файл конфигурации сайта:
 
2. Создайте файл конфигурации сайта:
<code>
+
<pre>sudo nano /etc/nginx/sites-available/example.com</pre>
sudo nano /etc/nginx/sites-available/example.com
 
</code>
 
  
 
3. Добавьте следующую конфигурацию:
 
3. Добавьте следующую конфигурацию:
<code>
+
<pre>server {</pre>
server {
+
<pre>listen 80;</pre>
    listen 80;
+
<pre>server_name example.com www.example.com;</pre>
    server_name example.com www.example.com;
+
<pre>root /var/www/example.com/public_html;</pre>
    root /var/www/example.com/public_html;
+
<pre>index index.html index.php;</pre>
    index index.html index.php;
+
<pre>location / {</pre>
   
+
<pre>try_files $uri $uri/ =404;</pre>
    location / {
+
<pre>}</pre>
        try_files $uri $uri/ =404;
+
<pre>location ~ \.php$ {</pre>
    }
+
<pre>include snippets/fastcgi-php.conf;</pre>
   
+
<pre>fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;</pre>
    location ~ \.php$ {
+
<pre>}</pre>
        include snippets/fastcgi-php.conf;
+
<pre>location ~ /\.ht {</pre>
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
+
<pre>deny all;</pre>
    }
+
<pre>}</pre>
   
+
<pre>}</pre>
    location ~ /\.ht {
 
        deny all;
 
    }
 
}
 
</code>
 
  
 
4. Создайте символическую ссылку для активации сайта:
 
4. Создайте символическую ссылку для активации сайта:
<code>
+
<pre>sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/</pre>
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
 
</code>
 
  
 
5. Проверьте конфигурацию:
 
5. Проверьте конфигурацию:
<code>
+
<pre>sudo nginx -t</pre>
sudo nginx -t
 
</code>
 
  
 
6. Перезапустите Nginx:
 
6. Перезапустите Nginx:
<code>
+
<pre>sudo systemctl restart nginx</pre>
sudo systemctl restart nginx
 
</code>
 
  
 
== 5. Настройка PHP-FPM ==
 
== 5. Настройка PHP-FPM ==
Строка 112: Строка 85:
  
 
1. Установите PHP и PHP-FPM:
 
1. Установите PHP и PHP-FPM:
<code>
+
<pre>sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip</pre>
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
 
</code>
 
  
 
2. Запустите PHP-FPM:
 
2. Запустите PHP-FPM:
<code>
+
<pre>sudo systemctl start php8.1-fpm</pre>
sudo systemctl start php8.1-fpm
+
<pre>sudo systemctl enable php8.1-fpm</pre>
sudo systemctl enable php8.1-fpm
 
</code>
 
  
 
=== Настройка PHP-FPM для Nginx ===
 
=== Настройка PHP-FPM для Nginx ===
  
 
1. Отредактируйте конфигурацию PHP-FPM:
 
1. Отредактируйте конфигурацию PHP-FPM:
<code>
+
<pre>sudo nano /etc/php/8.1/fpm/pool.d/www.conf</pre>
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
 
</code>
 
  
 
2. Найдите и измените следующие параметры:
 
2. Найдите и измените следующие параметры:
<code>
+
<pre>listen = /var/run/php/php8.1-fpm.sock</pre>
listen = /var/run/php/php8.1-fpm.sock
+
<pre>listen.owner = www-data</pre>
listen.owner = www-data
+
<pre>listen.group = www-data</pre>
listen.group = www-data
+
<pre>listen.mode = 0660</pre>
listen.mode = 0660
 
</code>
 
  
 
3. Перезапустите PHP-FPM:
 
3. Перезапустите PHP-FPM:
<code>
+
<pre>sudo systemctl restart php8.1-fpm</pre>
sudo systemctl restart php8.1-fpm
 
</code>
 
  
 
== 6. Настройка SSL сертификатов ==
 
== 6. Настройка SSL сертификатов ==
Строка 147: Строка 110:
  
 
1. Установите Certbot:
 
1. Установите Certbot:
<code>
+
<pre>sudo apt install certbot python3-certbot-nginx</pre>
sudo apt install certbot python3-certbot-nginx
 
</code>
 
  
 
2. Получите SSL сертификат:
 
2. Получите SSL сертификат:
<code>
+
<pre>sudo certbot --nginx -d example.com -d www.example.com</pre>
sudo certbot --nginx -d example.com -d www.example.com
 
</code>
 
  
 
3. Проверьте автоматическое обновление:
 
3. Проверьте автоматическое обновление:
<code>
+
<pre>sudo certbot renew --dry-run</pre>
sudo certbot renew --dry-run
 
</code>
 
  
 
== 7. Оптимизация производительности ==
 
== 7. Оптимизация производительности ==
Строка 166: Строка 123:
  
 
1. Добавьте в конфигурацию сайта:
 
1. Добавьте в конфигурацию сайта:
<code>
+
<pre>location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {</pre>
# Кэширование статических файлов
+
<pre>expires 1y;</pre>
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
+
<pre>add_header Cache-Control "public, immutable";</pre>
    expires 1y;
+
<pre>}</pre>
    add_header Cache-Control "public, immutable";
+
<pre>gzip on;</pre>
}
+
<pre>gzip_vary on;</pre>
 
+
<pre>gzip_min_length 1024;</pre>
# Сжатие
+
<pre>gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;</pre>
gzip on;
 
gzip_vary on;
 
gzip_min_length 1024;
 
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
 
</code>
 
  
 
=== Настройка worker процессов ===
 
=== Настройка worker процессов ===
  
 
1. Отредактируйте основной файл конфигурации:
 
1. Отредактируйте основной файл конфигурации:
<code>
+
<pre>sudo nano /etc/nginx/nginx.conf</pre>
sudo nano /etc/nginx/nginx.conf
 
</code>
 
  
 
2. Настройте параметры:
 
2. Настройте параметры:
<code>
+
<pre>worker_processes auto;</pre>
worker_processes auto;
+
<pre>worker_connections 1024;</pre>
worker_connections 1024;
+
<pre>keepalive_timeout 65;</pre>
keepalive_timeout 65;
+
<pre>client_max_body_size 100M;</pre>
client_max_body_size 100M;
 
</code>
 
  
 
== 8. Настройка файрвола ==
 
== 8. Настройка файрвола ==
Строка 200: Строка 148:
  
 
1. Разрешите HTTP и HTTPS трафик:
 
1. Разрешите HTTP и HTTPS трафик:
<code>
+
<pre>sudo ufw allow 'Nginx Full'</pre>
sudo ufw allow 'Nginx Full'
 
</code>
 
  
 
=== Для CentOS/RHEL (firewalld) ===
 
=== Для CentOS/RHEL (firewalld) ===
  
 
1. Разрешите HTTP и HTTPS:
 
1. Разрешите HTTP и HTTPS:
<code>
+
<pre>sudo firewall-cmd --permanent --add-service=http</pre>
sudo firewall-cmd --permanent --add-service=http
+
<pre>sudo firewall-cmd --permanent --add-service=https</pre>
sudo firewall-cmd --permanent --add-service=https
+
<pre>sudo firewall-cmd --reload</pre>
sudo firewall-cmd --reload
 
</code>
 
  
 
== 9. Управление Nginx ==
 
== 9. Управление Nginx ==
Строка 218: Строка 162:
  
 
* '''Запуск Nginx''':
 
* '''Запуск Nginx''':
<code>
+
<pre>sudo systemctl start nginx</pre>
sudo systemctl start nginx
 
</code>
 
  
 
* '''Остановка Nginx''':
 
* '''Остановка Nginx''':
<code>
+
<pre>sudo systemctl stop nginx</pre>
sudo systemctl stop nginx
 
</code>
 
  
 
* '''Перезапуск Nginx''':
 
* '''Перезапуск Nginx''':
<code>
+
<pre>sudo systemctl restart nginx</pre>
sudo systemctl restart nginx
 
</code>
 
  
 
* '''Перезагрузка конфигурации''':
 
* '''Перезагрузка конфигурации''':
<code>
+
<pre>sudo systemctl reload nginx</pre>
sudo systemctl reload nginx
 
</code>
 
  
 
* '''Проверка статуса''':
 
* '''Проверка статуса''':
<code>
+
<pre>sudo systemctl status nginx</pre>
sudo systemctl status nginx
 
</code>
 
  
 
* '''Проверка конфигурации''':
 
* '''Проверка конфигурации''':
<code>
+
<pre>sudo nginx -t</pre>
sudo nginx -t
 
</code>
 
  
 
== 10. Мониторинг и логи ==
 
== 10. Мониторинг и логи ==
Строка 252: Строка 184:
  
 
* '''Логи ошибок''':
 
* '''Логи ошибок''':
<code>
+
<pre>sudo tail -f /var/log/nginx/error.log</pre>
sudo tail -f /var/log/nginx/error.log
 
</code>
 
  
 
* '''Логи доступа''':
 
* '''Логи доступа''':
<code>
+
<pre>sudo tail -f /var/log/nginx/access.log</pre>
sudo tail -f /var/log/nginx/access.log
 
</code>
 
  
 
* '''Все логи Nginx''':
 
* '''Все логи Nginx''':
<code>
+
<pre>sudo tail -f /var/log/nginx/*.log</pre>
sudo tail -f /var/log/nginx/*.log
 
</code>
 
  
 
=== Мониторинг производительности ===
 
=== Мониторинг производительности ===
  
 
1. Установите htop для мониторинга:
 
1. Установите htop для мониторинга:
<code>
+
<pre>sudo apt install htop</pre>
sudo apt install htop
 
</code>
 
  
 
2. Запустите мониторинг:
 
2. Запустите мониторинг:
<code>
+
<pre>htop</pre>
htop
 
</code>
 
  
 
== 11. Безопасность ==
 
== 11. Безопасность ==
Строка 283: Строка 205:
  
 
1. Скрыть версию Nginx:
 
1. Скрыть версию Nginx:
<code>
+
<pre>server_tokens off;</pre>
server_tokens off;
 
</code>
 
  
 
2. Настроить ограничения:
 
2. Настроить ограничения:
<code>
+
<pre>client_max_body_size 10M;</pre>
# Ограничение размера запроса
+
<pre>client_body_timeout 12;</pre>
client_max_body_size 10M;
+
<pre>client_header_timeout 12;</pre>
 
+
<pre>keepalive_timeout 15;</pre>
# Таймауты
+
<pre>send_timeout 10;</pre>
client_body_timeout 12;
 
client_header_timeout 12;
 
keepalive_timeout 15;
 
send_timeout 10;
 
</code>
 
  
 
3. Настроить права доступа:
 
3. Настроить права доступа:
<code>
+
<pre>sudo chown -R www-data:www-data /var/www/</pre>
sudo chown -R www-data:www-data /var/www/
+
<pre>sudo chmod -R 755 /var/www/</pre>
sudo chmod -R 755 /var/www/
 
</code>
 
  
 
== Заключение ==
 
== Заключение ==

Текущая версия на 10:34, 15 октября 2025

Настройка Nginx веб-сервера

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Обновите систему до последней версии пакетов.

2. Установка Nginx

Для Ubuntu/Debian

1. Обновите список пакетов:

sudo apt update

2. Установите Nginx:

sudo apt install nginx

3. Запустите и включите автозапуск Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Для CentOS/RHEL/Fedora

1. Установите Nginx:

sudo yum install nginx
  1. или для новых версий
sudo dnf install nginx

2. Запустите и включите автозапуск:

sudo systemctl start nginx
sudo systemctl enable nginx

3. Проверка установки

1. Откройте веб-браузер и перейдите по адресу http://ваш-ip-адрес или http://localhost. 2. Вы должны увидеть страницу приветствия Nginx.

4. Базовая настройка Nginx

Структура конфигурационных файлов

  • Основной файл конфигурации: `/etc/nginx/nginx.conf`
  • Директория сайтов: `/etc/nginx/sites-available/`
  • Активные сайты: `/etc/nginx/sites-enabled/`
  • Директория логов: `/var/log/nginx/`

Создание виртуального хоста

1. Создайте директорию для вашего сайта:

sudo mkdir -p /var/www/example.com/public_html

2. Создайте файл конфигурации сайта:

sudo nano /etc/nginx/sites-available/example.com

3. Добавьте следующую конфигурацию:

server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public_html;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}

4. Создайте символическую ссылку для активации сайта:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

5. Проверьте конфигурацию:

sudo nginx -t

6. Перезапустите Nginx:

sudo systemctl restart nginx

5. Настройка PHP-FPM

Установка PHP-FPM

1. Установите PHP и PHP-FPM:

sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip

2. Запустите PHP-FPM:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Настройка PHP-FPM для Nginx

1. Отредактируйте конфигурацию PHP-FPM:

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

2. Найдите и измените следующие параметры:

listen = /var/run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

3. Перезапустите PHP-FPM:

sudo systemctl restart php8.1-fpm

6. Настройка SSL сертификатов

Установка Certbot

1. Установите Certbot:

sudo apt install certbot python3-certbot-nginx

2. Получите SSL сертификат:

sudo certbot --nginx -d example.com -d www.example.com

3. Проверьте автоматическое обновление:

sudo certbot renew --dry-run

7. Оптимизация производительности

Настройка кэширования

1. Добавьте в конфигурацию сайта:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;

Настройка worker процессов

1. Отредактируйте основной файл конфигурации:

sudo nano /etc/nginx/nginx.conf

2. Настройте параметры:

worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
client_max_body_size 100M;

8. Настройка файрвола

Для Ubuntu/Debian (ufw)

1. Разрешите HTTP и HTTPS трафик:

sudo ufw allow 'Nginx Full'

Для CentOS/RHEL (firewalld)

1. Разрешите HTTP и HTTPS:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

9. Управление Nginx

Основные команды управления

  • Запуск Nginx:
sudo systemctl start nginx
  • Остановка Nginx:
sudo systemctl stop nginx
  • Перезапуск Nginx:
sudo systemctl restart nginx
  • Перезагрузка конфигурации:
sudo systemctl reload nginx
  • Проверка статуса:
sudo systemctl status nginx
  • Проверка конфигурации:
sudo nginx -t

10. Мониторинг и логи

Просмотр логов

  • Логи ошибок:
sudo tail -f /var/log/nginx/error.log
  • Логи доступа:
sudo tail -f /var/log/nginx/access.log
  • Все логи Nginx:
sudo tail -f /var/log/nginx/*.log

Мониторинг производительности

1. Установите htop для мониторинга:

sudo apt install htop

2. Запустите мониторинг:

htop

11. Безопасность

Базовая настройка безопасности

1. Скрыть версию Nginx:

server_tokens off;

2. Настроить ограничения:

client_max_body_size 10M;
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

3. Настроить права доступа:

sudo chown -R www-data:www-data /var/www/
sudo chmod -R 755 /var/www/

Заключение

Nginx веб-сервер успешно установлен и настроен! Теперь вы можете размещать высокопроизводительные веб-сайты.

Для размещения ваших проектов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой Nginx и оптимизацией производительности вашего сервера!