Настройка Nginx веб-сервера — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Настройка Nginx веб-сервера = == 1. Подготовка системы == * Войдите в систему под учетной зап…») |
Admin (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 11: | Строка 11: | ||
1. Обновите список пакетов: | 1. Обновите список пакетов: | ||
− | < | + | <pre>sudo apt update</pre> |
− | sudo apt update | ||
− | </ | ||
2. Установите Nginx: | 2. Установите Nginx: | ||
− | < | + | <pre>sudo apt install nginx</pre> |
− | sudo apt install nginx | ||
− | </ | ||
3. Запустите и включите автозапуск Nginx: | 3. Запустите и включите автозапуск Nginx: | ||
− | < | + | <pre>sudo systemctl start nginx</pre> |
− | sudo systemctl start nginx | + | <pre>sudo systemctl enable nginx</pre> |
− | sudo systemctl enable nginx | ||
− | </ | ||
=== Для CentOS/RHEL/Fedora === | === Для CentOS/RHEL/Fedora === | ||
1. Установите Nginx: | 1. Установите Nginx: | ||
− | < | + | <pre>sudo yum install nginx</pre> |
− | sudo yum install nginx | ||
− | </ | ||
# или для новых версий | # или для новых версий | ||
− | < | + | <pre>sudo dnf install nginx</pre> |
− | sudo dnf install nginx | ||
− | </ | ||
2. Запустите и включите автозапуск: | 2. Запустите и включите автозапуск: | ||
− | < | + | <pre>sudo systemctl start nginx</pre> |
− | sudo systemctl start nginx | + | <pre>sudo systemctl enable nginx</pre> |
− | sudo systemctl enable nginx | ||
− | </ | ||
== 3. Проверка установки == | == 3. Проверка установки == | ||
Строка 60: | Строка 48: | ||
1. Создайте директорию для вашего сайта: | 1. Создайте директорию для вашего сайта: | ||
− | < | + | <pre>sudo mkdir -p /var/www/example.com/public_html</pre> |
− | sudo mkdir -p /var/www/example.com/public_html | ||
− | </ | ||
2. Создайте файл конфигурации сайта: | 2. Создайте файл конфигурации сайта: | ||
− | < | + | <pre>sudo nano /etc/nginx/sites-available/example.com</pre> |
− | sudo nano /etc/nginx/sites-available/example.com | ||
− | </ | ||
3. Добавьте следующую конфигурацию: | 3. Добавьте следующую конфигурацию: | ||
− | < | + | <pre>server {</pre> |
− | server { | + | <pre>listen 80;</pre> |
− | + | <pre>server_name example.com www.example.com;</pre> | |
− | + | <pre>root /var/www/example.com/public_html;</pre> | |
− | + | <pre>index index.html index.php;</pre> | |
− | + | <pre>location / {</pre> | |
− | + | <pre>try_files $uri $uri/ =404;</pre> | |
− | + | <pre>}</pre> | |
− | + | <pre>location ~ \.php$ {</pre> | |
− | + | <pre>include snippets/fastcgi-php.conf;</pre> | |
− | + | <pre>fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;</pre> | |
− | + | <pre>}</pre> | |
− | + | <pre>location ~ /\.ht {</pre> | |
− | + | <pre>deny all;</pre> | |
− | + | <pre>}</pre> | |
− | + | <pre>}</pre> | |
− | |||
− | |||
− | |||
− | } | ||
− | </ | ||
4. Создайте символическую ссылку для активации сайта: | 4. Создайте символическую ссылку для активации сайта: | ||
− | < | + | <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/ | ||
− | </ | ||
5. Проверьте конфигурацию: | 5. Проверьте конфигурацию: | ||
− | < | + | <pre>sudo nginx -t</pre> |
− | sudo nginx -t | ||
− | </ | ||
6. Перезапустите Nginx: | 6. Перезапустите Nginx: | ||
− | < | + | <pre>sudo systemctl restart nginx</pre> |
− | sudo systemctl restart nginx | ||
− | </ | ||
== 5. Настройка PHP-FPM == | == 5. Настройка PHP-FPM == | ||
Строка 112: | Строка 85: | ||
1. Установите PHP и PHP-FPM: | 1. Установите PHP и PHP-FPM: | ||
− | < | + | <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 | ||
− | </ | ||
2. Запустите PHP-FPM: | 2. Запустите PHP-FPM: | ||
− | < | + | <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 | ||
− | </ | ||
=== Настройка PHP-FPM для Nginx === | === Настройка PHP-FPM для Nginx === | ||
1. Отредактируйте конфигурацию PHP-FPM: | 1. Отредактируйте конфигурацию PHP-FPM: | ||
− | < | + | <pre>sudo nano /etc/php/8.1/fpm/pool.d/www.conf</pre> |
− | sudo nano /etc/php/8.1/fpm/pool.d/www.conf | ||
− | </ | ||
2. Найдите и измените следующие параметры: | 2. Найдите и измените следующие параметры: | ||
− | < | + | <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 | ||
− | </ | ||
3. Перезапустите PHP-FPM: | 3. Перезапустите PHP-FPM: | ||
− | < | + | <pre>sudo systemctl restart php8.1-fpm</pre> |
− | sudo systemctl restart php8.1-fpm | ||
− | </ | ||
== 6. Настройка SSL сертификатов == | == 6. Настройка SSL сертификатов == | ||
Строка 147: | Строка 110: | ||
1. Установите Certbot: | 1. Установите Certbot: | ||
− | < | + | <pre>sudo apt install certbot python3-certbot-nginx</pre> |
− | sudo apt install certbot python3-certbot-nginx | ||
− | </ | ||
2. Получите SSL сертификат: | 2. Получите SSL сертификат: | ||
− | < | + | <pre>sudo certbot --nginx -d example.com -d www.example.com</pre> |
− | sudo certbot --nginx -d example.com -d www.example.com | ||
− | </ | ||
3. Проверьте автоматическое обновление: | 3. Проверьте автоматическое обновление: | ||
− | < | + | <pre>sudo certbot renew --dry-run</pre> |
− | sudo certbot renew --dry-run | ||
− | </ | ||
== 7. Оптимизация производительности == | == 7. Оптимизация производительности == | ||
Строка 166: | Строка 123: | ||
1. Добавьте в конфигурацию сайта: | 1. Добавьте в конфигурацию сайта: | ||
− | < | + | <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> |
− | + | <pre>}</pre> | |
− | + | <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; | ||
− | </ | ||
=== Настройка worker процессов === | === Настройка worker процессов === | ||
1. Отредактируйте основной файл конфигурации: | 1. Отредактируйте основной файл конфигурации: | ||
− | < | + | <pre>sudo nano /etc/nginx/nginx.conf</pre> |
− | sudo nano /etc/nginx/nginx.conf | ||
− | </ | ||
2. Настройте параметры: | 2. Настройте параметры: | ||
− | < | + | <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; | ||
− | </ | ||
== 8. Настройка файрвола == | == 8. Настройка файрвола == | ||
Строка 200: | Строка 148: | ||
1. Разрешите HTTP и HTTPS трафик: | 1. Разрешите HTTP и HTTPS трафик: | ||
− | < | + | <pre>sudo ufw allow 'Nginx Full'</pre> |
− | sudo ufw allow 'Nginx Full' | ||
− | </ | ||
=== Для CentOS/RHEL (firewalld) === | === Для CentOS/RHEL (firewalld) === | ||
1. Разрешите HTTP и HTTPS: | 1. Разрешите HTTP и HTTPS: | ||
− | < | + | <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 | ||
− | </ | ||
== 9. Управление Nginx == | == 9. Управление Nginx == | ||
Строка 218: | Строка 162: | ||
* '''Запуск Nginx''': | * '''Запуск Nginx''': | ||
− | < | + | <pre>sudo systemctl start nginx</pre> |
− | sudo systemctl start nginx | ||
− | </ | ||
* '''Остановка Nginx''': | * '''Остановка Nginx''': | ||
− | < | + | <pre>sudo systemctl stop nginx</pre> |
− | sudo systemctl stop nginx | ||
− | </ | ||
* '''Перезапуск Nginx''': | * '''Перезапуск Nginx''': | ||
− | < | + | <pre>sudo systemctl restart nginx</pre> |
− | sudo systemctl restart nginx | ||
− | </ | ||
* '''Перезагрузка конфигурации''': | * '''Перезагрузка конфигурации''': | ||
− | < | + | <pre>sudo systemctl reload nginx</pre> |
− | sudo systemctl reload nginx | ||
− | </ | ||
* '''Проверка статуса''': | * '''Проверка статуса''': | ||
− | < | + | <pre>sudo systemctl status nginx</pre> |
− | sudo systemctl status nginx | ||
− | </ | ||
* '''Проверка конфигурации''': | * '''Проверка конфигурации''': | ||
− | < | + | <pre>sudo nginx -t</pre> |
− | sudo nginx -t | ||
− | </ | ||
== 10. Мониторинг и логи == | == 10. Мониторинг и логи == | ||
Строка 252: | Строка 184: | ||
* '''Логи ошибок''': | * '''Логи ошибок''': | ||
− | < | + | <pre>sudo tail -f /var/log/nginx/error.log</pre> |
− | sudo tail -f /var/log/nginx/error.log | ||
− | </ | ||
* '''Логи доступа''': | * '''Логи доступа''': | ||
− | < | + | <pre>sudo tail -f /var/log/nginx/access.log</pre> |
− | sudo tail -f /var/log/nginx/access.log | ||
− | </ | ||
* '''Все логи Nginx''': | * '''Все логи Nginx''': | ||
− | < | + | <pre>sudo tail -f /var/log/nginx/*.log</pre> |
− | sudo tail -f /var/log/nginx/*.log | ||
− | </ | ||
=== Мониторинг производительности === | === Мониторинг производительности === | ||
1. Установите htop для мониторинга: | 1. Установите htop для мониторинга: | ||
− | < | + | <pre>sudo apt install htop</pre> |
− | sudo apt install htop | ||
− | </ | ||
2. Запустите мониторинг: | 2. Запустите мониторинг: | ||
− | < | + | <pre>htop</pre> |
− | htop | ||
− | </ | ||
== 11. Безопасность == | == 11. Безопасность == | ||
Строка 283: | Строка 205: | ||
1. Скрыть версию Nginx: | 1. Скрыть версию Nginx: | ||
− | < | + | <pre>server_tokens off;</pre> |
− | server_tokens off; | ||
− | </ | ||
2. Настроить ограничения: | 2. Настроить ограничения: | ||
− | < | + | <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; | ||
− | </ | ||
3. Настроить права доступа: | 3. Настроить права доступа: | ||
− | < | + | <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/ | ||
− | </ | ||
== Заключение == | == Заключение == |
Текущая версия на 10:34, 15 октября 2025
Содержание
- 1 Настройка Nginx веб-сервера
- 1.1 1. Подготовка системы
- 1.2 2. Установка Nginx
- 1.3 3. Проверка установки
- 1.4 4. Базовая настройка Nginx
- 1.5 5. Настройка PHP-FPM
- 1.6 6. Настройка SSL сертификатов
- 1.7 7. Оптимизация производительности
- 1.8 8. Настройка файрвола
- 1.9 9. Управление Nginx
- 1.10 10. Мониторинг и логи
- 1.11 11. Безопасность
- 1.12 Заключение
Настройка 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
- или для новых версий
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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных проектов с Nginx
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой Nginx и оптимизацией производительности вашего сервера!