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;
}
六、常见问题与解决
-
Nginx无法启动:检查配置文件是否有语法错误。
sudo nginx -t
-
502 Bad Gateway:通常是后端服务未启动或不可达,检查后端服务状态。
-
403 Forbidden:检查文件和目录的权限设置,确保Nginx用户有访问权限。