溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx常用配置方法

發布時間:2021-06-30 16:45:04 來源:億速云 閱讀:208 作者:chen 欄目:編程語言
# Nginx常用配置方法

## 一、Nginx基礎概述

Nginx(發音為"engine x")是一款高性能的HTTP和反向代理服務器,由俄羅斯程序員Igor Sysoev開發。作為輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,Nginx以高并發、低內存占用著稱,全球約32.2%的網站使用Nginx作為Web服務器(數據來源:W3Techs)。

### 核心特性
- 事件驅動架構
- 非阻塞I/O模型
- 熱部署能力
- 負載均衡支持
- 高擴展性

## 二、安裝與基本命令

### 1. 安裝方法(以Ubuntu為例)
```bash
# 添加官方倉庫
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

# 安裝Nginx
sudo apt update
sudo apt install nginx

2. 常用管理命令

# 啟動服務
sudo systemctl start nginx

# 停止服務
sudo systemctl stop nginx

# 重啟服務(加載新配置)
sudo systemctl restart nginx

# 重新加載配置(不中斷服務)
sudo systemctl reload nginx

# 查看狀態
sudo systemctl status nginx

# 設置開機啟動
sudo systemctl enable nginx

三、核心配置文件結構

Nginx配置文件通常位于/etc/nginx/nginx.conf,主要包含三個上下文塊:

main        # 全局配置(影響所有模塊)
events      # 事件處理配置
http        # HTTP服務器配置

典型配置層次:

http {
    server {
        listen 80;
        server_name example.com;
        
        location / {
            root /var/www/html;
            index index.html;
        }
    }
}

四、常用配置場景

1. 靜態網站服務

server {
    listen 80;
    server_name example.com;
    
    root /var/www/example;
    index index.html;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    # 禁止訪問隱藏文件
    location ~ /\. {
        deny all;
    }
}

2. 反向代理配置

server {
    listen 80;
    server_name api.example.com;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3. 負載均衡配置

upstream backend {
    server 192.168.1.100:8000 weight=3;
    server 192.168.1.101:8000;
    server 192.168.1.102:8000 backup;
}

server {
    listen 80;
    server_name app.example.com;
    
    location / {
        proxy_pass http://backend;
    }
}

支持算法: - 輪詢(默認) - 加權輪詢 - IP哈希 - 最少連接

4. HTTPS配置(Let’s Encrypt)

server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
    ssl_prefer_server_ciphers on;
    
    location / {
        root /var/www/html;
        index index.html;
    }
}

# HTTP強制跳轉HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

5. 訪問控制

location /admin/ {
    # 基礎認證
    auth_basic "Admin Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    
    # IP白名單
    allow 192.168.1.0/24;
    allow 10.0.0.1;
    deny all;
}

生成密碼文件:

printf "username:$(openssl passwd -apr1)" > /etc/nginx/.htpasswd

五、性能優化配置

1. 連接優化

events {
    worker_connections 1024;  # 每個worker最大連接數
    multi_accept on;          # 同時接受多個連接
    use epoll;                # Linux高性能事件模型
}

http {
    sendfile on;              # 啟用零拷貝傳輸
    tcp_nopush on;            # 優化數據包發送
    tcp_nodelay on;           # 禁用Nagle算法
    keepalive_timeout 65;     # 保持連接超時
}

2. Gzip壓縮

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 6;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;

3. 緩存配置

# 靜態資源緩存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

# 代理緩存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}

六、日志管理

1. 訪問日志配置

http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log warn;
}

2. 日志分割(通過logrotate)

創建/etc/logrotate.d/nginx

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

七、安全加固配置

1. 基礎安全設置

server {
    # 禁用server tokens
    server_tokens off;
    
    # 防止點擊劫持
    add_header X-Frame-Options "SAMEORIGIN";
    
    # XSS防護
    add_header X-XSS-Protection "1; mode=block";
    
    # 內容安全策略
    add_header Content-Security-Policy "default-src 'self'";
}

2. 限制請求方法

location /api/ {
    limit_except GET POST {
        deny all;
    }
}

3. 請求頻率限制

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
}

八、常見問題排查

1. 配置檢查命令

# 測試配置語法
sudo nginx -t

# 查看加載的配置文件路徑
sudo nginx -T

2. 錯誤日志位置

  • /var/log/nginx/error.log(默認路徑)
  • 可通過error_log指令自定義路徑

3. 性能監控

# 查看活躍連接
netstat -anp | grep nginx

# 查看進程狀態
top -p $(pgrep nginx | tr '\n' ',' | sed 's/,$//')

九、進階配置示例

1. WebSocket代理

location /ws/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

2. 多域名配置

server {
    listen 80;
    server_name example.com www.example.com;
    
    location / {
        root /var/www/example;
    }
}

server {
    listen 80;
    server_name blog.example.com;
    
    location / {
        proxy_pass http://localhost:2368;
    }
}

3. 自定義錯誤頁面

error_page 404 /404.html;
location = /404.html {
    root /usr/share/nginx/html;
    internal;
}

十、總結

本文涵蓋了Nginx從基礎安裝到高級配置的多個方面,包括: 1. 靜態資源服務配置 2. 反向代理與負載均衡 3. HTTPS安全配置 4. 性能優化技巧 5. 安全加固方案 6. 常見問題排查方法

實際生產環境中,建議: - 使用nginx -t測試所有配置變更 - 通過灰度發布逐步應用重大修改 - 定期檢查錯誤日志和訪問日志 - 保持Nginx版本更新以獲得安全補丁

通過合理配置,Nginx可以輕松應對高并發場景,成為現代Web架構中不可或缺的組件。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女