Назад к гайдам

Nginx: Настройка и оптимизация веб-сервера

DevOps Продвинутый DevOps Linux Nginx
5 мин чтения 26 просмотров

# Nginx: Настройка и оптимизация веб-сервера

## Введение

Nginx - мощный веб-сервер и reverse proxy. Правильная настройка критически важна для производительности и безопасности.

## Установка

```bash
# Ubuntu/Debian
sudo apt-get install nginx

# macOS
brew install nginx

# Docker
docker run -d -p 80:80 nginx:alpine
```

## Базовая конфигурация

```nginx
server {
listen 80;
server_name example.com;

location / {
root /var/www/html;
index index.html;
}
}
```

## Reverse Proxy для Django

```nginx
upstream django {
server 127.0.0.1:8000;
}

server {
listen 80;
server_name api.example.com;

location / {
proxy_pass http://django;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /static/ {
alias /var/www/static/;
}

location /media/ {
alias /var/www/media/;
}
}
```

## SSL/TLS с Let's Encrypt

```bash
sudo certbot --nginx -d example.com
```

Автоматически обновит конфигурацию Nginx.

## Load Balancing

```nginx
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

server {
location / {
proxy_pass http://backend;
}
}
```

## Кэширование

```nginx
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g;

server {
location / {
proxy_cache my_cache;
proxy_cache_valid 200 60m;
proxy_pass http://backend;
}
}
```

## Оптимизация

```nginx
# Увеличить worker connections
worker_connections 1024;

# Включить gzip
gzip on;
gzip_types text/plain text/css application/json;

# Кэширование статики
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
```

## Безопасность

```nginx
# Скрыть версию Nginx
server_tokens off;

# Заголовки безопасности
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
```

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

Nginx - мощный инструмент для production окружений. Правильная настройка обеспечит высокую производительность и безопасность.