插件窝 干货文章 Nginx基础知识入门实例分析

Nginx基础知识入门实例分析

Nginx 配置 example server 955    来源:    2025-04-23

Nginx基础知识入门实例分析

什么是Nginx?

Nginx(发音为"engine x")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它以高并发、低内存占用和高稳定性著称。

Nginx核心功能

  1. Web服务器:处理静态内容非常高效
  2. 反向代理:将客户端请求转发到后端服务器
  3. 负载均衡:在多台服务器间分配请求
  4. 缓存加速:提高网站响应速度
  5. SSL/TLS终端:处理HTTPS连接

基本安装与配置

安装Nginx

在Ubuntu/Debian上:

sudo apt update
sudo apt install nginx

在CentOS/RHEL上:

sudo yum install epel-release
sudo yum install nginx

基本操作命令

# 启动Nginx
sudo systemctl start nginx

# 停止Nginx
sudo systemctl stop nginx

# 重启Nginx
sudo systemctl restart nginx

# 重新加载配置(不中断服务)
sudo systemctl reload nginx

# 设置开机启动
sudo systemctl enable nginx

# 检查状态
sudo systemctl status nginx

配置文件结构

Nginx的主要配置文件通常位于: - /etc/nginx/nginx.conf(主配置文件) - /etc/nginx/conf.d/(附加配置文件目录) - /etc/nginx/sites-available/(虚拟主机配置) - /etc/nginx/sites-enabled/(启用的虚拟主机链接)

基本配置示例

# 全局配置块
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
    # 其他事件相关配置
}

http {
    # HTTP全局配置
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # 日志格式
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # 虚拟主机配置
    server {
        listen 80;
        server_name example.com www.example.com;

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

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

常见配置实例

1. 静态网站服务

server {
    listen 80;
    server_name example.com;

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

    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 backend1.example.com weight=5;
    server backend2.example.com;
    server backend3.example.com backup;
}

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

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

4. HTTPS配置

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

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/secure.example.com;
    index index.html;
}

性能优化配置

# 在http块中添加
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1000;
gzip_proxied any;

# 静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

# 客户端连接设置
client_max_body_size 10m;
client_body_buffer_size 128k;
keepalive_timeout 65;
sendfile on;
tcp_nopush on;

常见问题排查

  1. 检查配置文件语法

    sudo nginx -t
    
  2. 查看错误日志

    tail -f /var/log/nginx/error.log
    
  3. 检查端口监听

    sudo netstat -tulnp | grep nginx
    
  4. 检查进程状态

    ps aux | grep nginx
    

安全建议

  1. 禁用不必要的HTTP方法:

    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
       return 405;
    }
    
  2. 隐藏Nginx版本信息:

    server_tokens off;
    
  3. 防止点击劫持:

    add_header X-Frame-Options "SAMEORIGIN";
    
  4. 启用XSS保护:

    add_header X-XSS-Protection "1; mode=block";
    

通过以上基础知识和实例,您可以开始配置和使用Nginx作为Web服务器或反向代理。随着经验的积累,您可以探索更多高级功能和优化技巧。