引言

Nginx 是一款高性能的 HTTP 和反向代理服务器,广泛应用于各种规模的网站和应用程序中。本文将深入解析 Ubuntu 12.04 系统下 Nginx 的配置与优化,帮助读者全面了解 Nginx 的配置技巧和性能调优方法。

一、Nginx 安装与基本配置

1. 安装 Nginx

在 Ubuntu 12.04 系统中,可以通过以下命令安装 Nginx:

sudo apt-get update
sudo apt-get install nginx

2. 基本配置

Nginx 的配置文件位于 /etc/nginx/nginx.conf。以下是基本配置示例:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;
    gzip_disable "msie6";

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

二、Nginx 高级配置

1. 虚拟主机

虚拟主机是 Nginx 的一个重要特性,可以实现多个网站共享同一台服务器。以下是创建虚拟主机的示例配置:

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

    location / {
        root   /var/www/example.com;
        index  index.html index.htm;
    }
}

2. 负载均衡

Nginx 支持多种负载均衡算法,如轮询、最少连接、IP 哈希等。以下是一个简单的轮询负载均衡配置示例:

http {
    upstream myapp1 {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

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

        location / {
            proxy_pass http://myapp1;
        }
    }
}

3. SSL 配置

Nginx 支持 HTTPS,以下是一个简单的 SSL 配置示例:

server {
    listen       443 ssl;
    server_name  www.example.com;

    ssl_certificate      /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key  /etc/nginx/ssl/example.com.key;

    ssl_session_timeout  1d;
    ssl_session_cache    shared:SSL:50m;
    ssl_session_tickets  off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

三、Nginx 性能优化

1. 优化配置

  • 开启 sendfile,减少磁盘 I/O 操作。
  • 适当调整 worker_processes,使 CPU 资源得到充分利用。
  • 使用 keepalive_timeout 提高连接复用率。

2. 使用缓存

Nginx 支持多种缓存策略,如静态文件缓存、第三方缓存等。以下是一个静态文件缓存配置示例:

http {
    # ...

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    server {
        # ...

        location ~* \.(jpg|jpeg|png|gif|ico)$ {
            proxy_cache my_cache;
            proxy_cache_revalidate on;
            proxy_cache_min_uses 1;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        }
    }
}

3. 使用第三方模块

http {
    # ...

    upstream myapp1 {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
        check;
        check_interval 3s;
        check_timeout 10s;
        check_http_methods GET;
        check_status 200;
    }

    server {
        # ...

        location / {
            proxy_pass http://myapp1;
        }
    }
}

四、总结

本文深入解析了 Ubuntu 12.04 系统下 Nginx 的配置与优化。通过了解 Nginx 的基本配置、高级配置、性能优化和第三方模块,读者可以更好地利用 Nginx 搭建高性能的网站和应用。在实际应用中,还需要根据具体需求不断调整和优化配置,以达到最佳性能。