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

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Настройка Nginx веб-сервера = == 1. Подготовка системы == * Войдите в систему под учетной зап…»
 
Нет описания правки
Строка 11: Строка 11:


1. Обновите список пакетов:
1. Обновите список пакетов:
<code>
<code>sudo apt update</code>
sudo apt update
</code>


2. Установите Nginx:
2. Установите Nginx:
<code>
<code>sudo apt install nginx</code>
sudo apt install nginx
</code>


3. Запустите и включите автозапуск Nginx:
3. Запустите и включите автозапуск Nginx:
<code>
<code>sudo systemctl start nginx</code>
sudo systemctl start nginx
<code>sudo systemctl enable nginx</code>
sudo systemctl enable nginx
</code>


=== Для CentOS/RHEL/Fedora ===
=== Для CentOS/RHEL/Fedora ===


1. Установите Nginx:
1. Установите Nginx:
<code>
<code>sudo yum install nginx</code>
sudo yum install nginx
</code>
# или для новых версий
# или для новых версий
<code>
<code>sudo dnf install nginx</code>
sudo dnf install nginx
</code>


2. Запустите и включите автозапуск:
2. Запустите и включите автозапуск:
<code>
<code>sudo systemctl start nginx</code>
sudo systemctl start nginx
<code>sudo systemctl enable nginx</code>
sudo systemctl enable nginx
</code>


== 3. Проверка установки ==
== 3. Проверка установки ==
Строка 60: Строка 48:


1. Создайте директорию для вашего сайта:
1. Создайте директорию для вашего сайта:
<code>
<code>sudo mkdir -p /var/www/example.com/public_html</code>
sudo mkdir -p /var/www/example.com/public_html
</code>


2. Создайте файл конфигурации сайта:
2. Создайте файл конфигурации сайта:
<code>
<code>sudo nano /etc/nginx/sites-available/example.com</code>
sudo nano /etc/nginx/sites-available/example.com
</code>


3. Добавьте следующую конфигурацию:
3. Добавьте следующую конфигурацию:
<code>
<code>server {</code>
server {
<code>listen 80;</code>
    listen 80;
<code>server_name example.com www.example.com;</code>
    server_name example.com www.example.com;
<code>root /var/www/example.com/public_html;</code>
    root /var/www/example.com/public_html;
<code>index index.html index.php;</code>
    index index.html index.php;
<code>location / {</code>
   
<code>try_files $uri $uri/ =404;</code>
    location / {
<code>}</code>
        try_files $uri $uri/ =404;
<code>location ~ \.php$ {</code>
    }
<code>include snippets/fastcgi-php.conf;</code>
   
<code>fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;</code>
    location ~ \.php$ {
<code>}</code>
        include snippets/fastcgi-php.conf;
<code>location ~ /\.ht {</code>
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
<code>deny all;</code>
    }
<code>}</code>
   
<code>}</code>
    location ~ /\.ht {
        deny all;
    }
}
</code>


4. Создайте символическую ссылку для активации сайта:
4. Создайте символическую ссылку для активации сайта:
<code>
<code>sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/</code>
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
</code>


5. Проверьте конфигурацию:
5. Проверьте конфигурацию:
<code>
<code>sudo nginx -t</code>
sudo nginx -t
</code>


6. Перезапустите Nginx:
6. Перезапустите Nginx:
<code>
<code>sudo systemctl restart nginx</code>
sudo systemctl restart nginx
</code>


== 5. Настройка PHP-FPM ==
== 5. Настройка PHP-FPM ==
Строка 112: Строка 85:


1. Установите PHP и PHP-FPM:
1. Установите PHP и PHP-FPM:
<code>
<code>sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip</code>
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>
<code>sudo systemctl start php8.1-fpm</code>
sudo systemctl start php8.1-fpm
<code>sudo systemctl enable php8.1-fpm</code>
sudo systemctl enable php8.1-fpm
</code>


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


1. Отредактируйте конфигурацию PHP-FPM:
1. Отредактируйте конфигурацию PHP-FPM:
<code>
<code>sudo nano /etc/php/8.1/fpm/pool.d/www.conf</code>
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
</code>


2. Найдите и измените следующие параметры:
2. Найдите и измените следующие параметры:
<code>
<code>listen = /var/run/php/php8.1-fpm.sock</code>
listen = /var/run/php/php8.1-fpm.sock
<code>listen.owner = www-data</code>
listen.owner = www-data
<code>listen.group = www-data</code>
listen.group = www-data
<code>listen.mode = 0660</code>
listen.mode = 0660
</code>


3. Перезапустите PHP-FPM:
3. Перезапустите PHP-FPM:
<code>
<code>sudo systemctl restart php8.1-fpm</code>
sudo systemctl restart php8.1-fpm
</code>


== 6. Настройка SSL сертификатов ==
== 6. Настройка SSL сертификатов ==
Строка 147: Строка 110:


1. Установите Certbot:
1. Установите Certbot:
<code>
<code>sudo apt install certbot python3-certbot-nginx</code>
sudo apt install certbot python3-certbot-nginx
</code>


2. Получите SSL сертификат:
2. Получите SSL сертификат:
<code>
<code>sudo certbot --nginx -d example.com -d www.example.com</code>
sudo certbot --nginx -d example.com -d www.example.com
</code>


3. Проверьте автоматическое обновление:
3. Проверьте автоматическое обновление:
<code>
<code>sudo certbot renew --dry-run</code>
sudo certbot renew --dry-run
</code>


== 7. Оптимизация производительности ==
== 7. Оптимизация производительности ==
Строка 166: Строка 123:


1. Добавьте в конфигурацию сайта:
1. Добавьте в конфигурацию сайта:
<code>
<code>location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {</code>
# Кэширование статических файлов
<code>expires 1y;</code>
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
<code>add_header Cache-Control "public, immutable";</code>
    expires 1y;
<code>}</code>
    add_header Cache-Control "public, immutable";
<code>gzip on;</code>
}
<code>gzip_vary on;</code>
 
<code>gzip_min_length 1024;</code>
# Сжатие
<code>gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;</code>
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>
<code>sudo nano /etc/nginx/nginx.conf</code>
sudo nano /etc/nginx/nginx.conf
</code>


2. Настройте параметры:
2. Настройте параметры:
<code>
<code>worker_processes auto;</code>
worker_processes auto;
<code>worker_connections 1024;</code>
worker_connections 1024;
<code>keepalive_timeout 65;</code>
keepalive_timeout 65;
<code>client_max_body_size 100M;</code>
client_max_body_size 100M;
</code>


== 8. Настройка файрвола ==
== 8. Настройка файрвола ==
Строка 200: Строка 148:


1. Разрешите HTTP и HTTPS трафик:
1. Разрешите HTTP и HTTPS трафик:
<code>
<code>sudo ufw allow 'Nginx Full'</code>
sudo ufw allow 'Nginx Full'
</code>


=== Для CentOS/RHEL (firewalld) ===
=== Для CentOS/RHEL (firewalld) ===


1. Разрешите HTTP и HTTPS:
1. Разрешите HTTP и HTTPS:
<code>
<code>sudo firewall-cmd --permanent --add-service=http</code>
sudo firewall-cmd --permanent --add-service=http
<code>sudo firewall-cmd --permanent --add-service=https</code>
sudo firewall-cmd --permanent --add-service=https
<code>sudo firewall-cmd --reload</code>
sudo firewall-cmd --reload
</code>


== 9. Управление Nginx ==
== 9. Управление Nginx ==
Строка 218: Строка 162:


* '''Запуск Nginx''':
* '''Запуск Nginx''':
<code>
<code>sudo systemctl start nginx</code>
sudo systemctl start nginx
</code>


* '''Остановка Nginx''':
* '''Остановка Nginx''':
<code>
<code>sudo systemctl stop nginx</code>
sudo systemctl stop nginx
</code>


* '''Перезапуск Nginx''':
* '''Перезапуск Nginx''':
<code>
<code>sudo systemctl restart nginx</code>
sudo systemctl restart nginx
</code>


* '''Перезагрузка конфигурации''':
* '''Перезагрузка конфигурации''':
<code>
<code>sudo systemctl reload nginx</code>
sudo systemctl reload nginx
</code>


* '''Проверка статуса''':
* '''Проверка статуса''':
<code>
<code>sudo systemctl status nginx</code>
sudo systemctl status nginx
</code>


* '''Проверка конфигурации''':
* '''Проверка конфигурации''':
<code>
<code>sudo nginx -t</code>
sudo nginx -t
</code>


== 10. Мониторинг и логи ==
== 10. Мониторинг и логи ==
Строка 252: Строка 184:


* '''Логи ошибок''':
* '''Логи ошибок''':
<code>
<code>sudo tail -f /var/log/nginx/error.log</code>
sudo tail -f /var/log/nginx/error.log
</code>


* '''Логи доступа''':
* '''Логи доступа''':
<code>
<code>sudo tail -f /var/log/nginx/access.log</code>
sudo tail -f /var/log/nginx/access.log
</code>


* '''Все логи Nginx''':
* '''Все логи Nginx''':
<code>
<code>sudo tail -f /var/log/nginx/*.log</code>
sudo tail -f /var/log/nginx/*.log
</code>


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


1. Установите htop для мониторинга:
1. Установите htop для мониторинга:
<code>
<code>sudo apt install htop</code>
sudo apt install htop
</code>


2. Запустите мониторинг:
2. Запустите мониторинг:
<code>
<code>htop</code>
htop
</code>


== 11. Безопасность ==
== 11. Безопасность ==
Строка 283: Строка 205:


1. Скрыть версию Nginx:
1. Скрыть версию Nginx:
<code>
<code>server_tokens off;</code>
server_tokens off;
</code>


2. Настроить ограничения:
2. Настроить ограничения:
<code>
<code>client_max_body_size 10M;</code>
# Ограничение размера запроса
<code>client_body_timeout 12;</code>
client_max_body_size 10M;
<code>client_header_timeout 12;</code>
 
<code>keepalive_timeout 15;</code>
# Таймауты
<code>send_timeout 10;</code>
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
</code>


3. Настроить права доступа:
3. Настроить права доступа:
<code>
<code>sudo chown -R www-data:www-data /var/www/</code>
sudo chown -R www-data:www-data /var/www/
<code>sudo chmod -R 755 /var/www/</code>
sudo chmod -R 755 /var/www/
</code>


== Заключение ==
== Заключение ==

Версия от 20:01, 14 октября 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 и оптимизацией производительности вашего сервера!