Nginx详细使用指南

Nginx(发音为“engine-x”)是一款高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3代理服务器。它以高并发、低内存消耗和丰富的功能而著称。以下是Nginx的详细使用指南,包括安装、基本配置、常用功能和性能优化等内容。

一、安装Nginx

1. 在Linux上安装

Ubuntu/Debian:

sudo apt update
sudo apt install nginx

CentOS/RHEL:

sudo yum install epel-release
sudo yum install nginx

2. 启动Nginx

安装完成后,可以使用以下命令启动Nginx:

sudo systemctl start nginx

设置开机自启动:

sudo systemctl enable nginx

3. 检查Nginx状态

sudo systemctl status nginx

二、基本配置

Nginx的配置文件通常位于 /etc/nginx/nginx.conf。主要配置项包括:

1. HTTP模块

http {
    include       mime.types;  # MIME类型
    default_type  application/octet-stream;  # 默认类型

    sendfile        on;  # 开启高效文件传输
    keepalive_timeout  65;  # 保持连接的超时时间

    server {
        listen       80;  # 监听端口
        server_name  localhost;  # 服务器名称

        location / {
            root   /usr/share/nginx/html;  # 网站根目录
            index  index.html index.htm;  # 默认首页
        }

        error_page  404              /404.html;  # 404错误页面
        location = /404.html {
            internal;  # 仅内部使用
        }
    }
}

2. 配置虚拟主机

http 块中,可以配置多个 server 块来支持虚拟主机。

server {
    listen 80;
    server_name example.com;  # 域名

    location / {
        root /var/www/example;  # 网站根目录
        index index.html index.htm;
    }
}

三、常用功能

1. 反向代理

Nginx可以作为反向代理服务器,将请求转发到后端应用服务器。

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

    location / {
        proxy_pass http://127.0.0.1:5000;  # 后端应用服务器地址
        proxy_set_header Host $host;  # 设置请求头
        proxy_set_header X-Real-IP $remote_addr;  # 真实IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 转发的IP
    }
}

2. 负载均衡

Nginx可以实现负载均衡,将请求分发到多个后端服务器。

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;  # 使用上面定义的后端服务器
        }
    }
}

3. SSL配置

为了启用HTTPS,您需要获取SSL证书,并在Nginx配置中进行设置。

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;  # SSL证书
    ssl_certificate_key /etc/ssl/private/example.com.key;  # SSL私钥

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

四、性能优化

1. 调整工作进程

根据CPU核心数调整Nginx的工作进程数。

worker_processes auto;  # 自动设置为CPU核心数

2. 使用缓存

可以配置Nginx的缓存来提高性能。

http {
    proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

    server {
        location / {
            proxy_cache my_cache;
            proxy_pass http://backend;
        }
    }
}

3. Gzip压缩

开启Gzip压缩以减少传输数据量。

http {
    gzip on;
    gzip_types text/plain application/json application/javascript text/css;
}

五、日志管理

Nginx的访问日志和错误日志默认位于 /var/log/nginx/access.log/var/log/nginx/error.log。可以在配置文件中自定义日志格式。

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;
}

六、常见问题与解决

  1. Nginx无法启动:检查配置文件是否有语法错误。

    sudo nginx -t
    
  2. 502 Bad Gateway:通常是后端服务未启动或不可达,检查后端服务状态。

  3. 403 Forbidden:检查文件和目录的权限设置,确保Nginx用户有访问权限。

posted @ 2021-10-08 19:32  John-Python  阅读(4406)  评论(0编辑  收藏  举报