插件窝 干货文章 ubuntu下的nginx服务器配置实例分析

ubuntu下的nginx服务器配置实例分析

Nginx 配置 example server 659    来源:    2025-04-22

Ubuntu下Nginx服务器配置实例分析

Nginx是一款高性能的HTTP和反向代理服务器,在Ubuntu系统上配置Nginx非常常见。下面我将提供一个详细的配置实例分析。

1. 安装Nginx

在Ubuntu上安装Nginx非常简单:

sudo apt update
sudo apt install nginx

安装完成后,Nginx会自动启动。你可以通过以下命令检查状态:

sudo systemctl status nginx

2. 基本配置文件结构

Nginx的主要配置文件位于: - /etc/nginx/nginx.conf - 主配置文件 - /etc/nginx/sites-available/ - 可用的虚拟主机配置 - /etc/nginx/sites-enabled/ - 已启用的虚拟主机配置(通常是sites-available中文件的符号链接) - /etc/nginx/conf.d/ - 额外的配置文件目录

3. 基本HTTP服务器配置实例

下面是一个简单的静态网站配置示例(通常放在/etc/nginx/sites-available/example.com):

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

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

配置说明:

  • listen 80: 监听80端口(HTTP)
  • server_name: 指定域名
  • root: 网站文件根目录
  • index: 默认索引文件
  • location /: 处理所有请求的规则
  • try_files: 尝试按顺序查找文件
  • access_logerror_log: 指定日志文件位置

4. 启用配置

创建符号链接到sites-enabled目录并测试配置:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置语法
sudo systemctl reload nginx  # 重新加载配置

5. HTTPS配置(使用Let's Encrypt)

现代网站应该使用HTTPS。以下是配置示例:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

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

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # SSL优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

获取SSL证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

6. 反向代理配置实例

Nginx常被用作反向代理,下面是一个将请求代理到本地Node.js应用的例子:

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

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

7. 负载均衡配置

Nginx可以配置为负载均衡器:

upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
    server backend3.example.com;

    # 可选:定义负载均衡方法
    # least_conn;  # 最少连接
    # ip_hash;    # IP哈希
}

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

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

8. 常见问题解决

1. 测试配置时报错

使用sudo nginx -t测试配置,它会指出具体的错误位置。

2. 权限问题

确保Nginx用户(通常是www-data)对网站目录有读取权限:

sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com

3. 重定向循环

检查HTTPS配置,确保没有在HTTPS块中又重定向到HTTPS。

4. 静态文件服务问题

确保root指令指向正确的目录,并且该目录存在。

9. 性能优化建议

  1. 启用Gzip压缩

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
  2. 调整工作进程

    worker_processes auto;  # 在nginx.conf中设置
    
  3. 启用缓存

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
       expires 30d;
       add_header Cache-Control "public, no-transform";
    }
    
  4. 调整缓冲区大小

    client_body_buffer_size 10K;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 2 1k;
    

通过以上配置实例,你可以在Ubuntu上搭建和优化Nginx服务器,满足各种Web服务需求。根据实际应用场景,可以进一步调整和扩展这些配置。