终极 Nginx 配置指南(全网最详细)
Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3 代理服务器。由于其高效的功能和灵活的配置,Nginx 被广泛用于网页服务器、负载均衡、动态内容处理等场景。本文将详细介绍 Nginx 的配置,包括常用的配置示例。
1. 基本安装
在 Linux 系统上,可以通过包管理工具安装 Nginx。例如,在 Ubuntu 上,可以使用以下命令安装:
sudo apt update
sudo apt install nginx
安装完成后,可以通过以下命令启动和停止 Nginx:
sudo systemctl start nginx
sudo systemctl stop nginx
2. 配置文件结构
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf
。文件结构如下:
worker_processes auto;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
}
}
3. 配置 Virtual Host
Nginx 允许你在同一个服务器上配置多个虚拟主机。以下是一个配置示例,用于配置两个虚拟主机:
http {
server {
listen 80;
server_name example.com;
location / {
root /var/www/example.com;
index index.html;
}
}
server {
listen 80;
server_name example.net;
location / {
root /var/www/example.net;
index index.html;
}
}
}
4. 配置反向代理
Nginx 作为反向代理的配置非常简单,以下是一个示例,将请求代理到后端的应用服务器(如 Node.js):
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
5. SSL 配置
为了提高网站的安全性,建议使用 SSL。使用 Let’s Encrypt 获取免费 SSL 证书后,可以按如下方式配置:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri; # 强制重定向到 HTTPS
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root /var/www/example.com;
index index.html;
}
}
6. gzip 压缩
为了提高传输效率,可以开启 gzip 压缩:
http {
gzip on;
gzip_types text/plain application/json application/javascript text/css application/xml;
gzip_min_length 1000;
}
7. 日志配置
记录 Nginx 的访问日志和错误日志,可以帮助你监控网站状态。配置示例如下:
http {
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
8. 测试与重启
配置文件修改后,应使用以下命令测试配置是否正确:
sudo nginx -t
如果没有错误,可以重启 Nginx 以应用新配置:
sudo systemctl restart nginx
结论
Nginx 的配置非常灵活,适合多种不同的场景。通过上述示例,你可以轻松地搭建出一个高效的 Web 服务器。如果你希望更深入了解 Nginx,建议查阅其官方文档,了解更多高级配置和优化技巧。