Nginx 配置终极版指南(全网最详细)
Nginx 是一款高性能的 HTTP 和反向代理服务器,它的使用范围非常广泛,包括静态网站、动态请求的反向代理、负载均衡等。本文将为你详细讲解 Nginx 的配置,包括基本设置、反向代理、负载均衡、安全设置、以及常见问题的解决方案。
一、基本安装
在开始配置之前,你需要首先安装 Nginx。以 Ubuntu 为例,使用以下命令进行安装:
sudo apt update
sudo apt install nginx
安装完成后,你可以通过 systemctl
启动 Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx
然后你可以在浏览器中访问 http://your_server_ip
来验证 Nginx 是否成功启动。
二、基本配置
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
。我们可以通过编辑这个文件来进行基本设置。例如,可以设置请求的最大体积、工作进程数量等:
worker_processes auto; # 让 Nginx 自动根据 CPU 核心数量来设置工作进程
worker_connections 1024; # 设置每个进程最大连接数
三、虚拟主机配置
Nginx 支持配置多个虚拟主机。你可以在 /etc/nginx/sites-available/
目录下创建你的虚拟主机配置文件,并通过符号链接将其链接到 /etc/nginx/sites-enabled/
目录。
以下是一个简单的虚拟主机配置示例:
server {
listen 80;
server_name example.com www.example.com; # 监听 80 端口
location / {
root /var/www/html; # 网站根目录
index index.html index.htm; # 默认主页
}
error_page 404 /404.html; # 自定义404页面
location = /404.html {
root /var/www/html/errors; # 404页面路径
}
}
四、反向代理
Nginx 可以用作反向代理服务器,将客户端请求转发到后端服务器。假设你有一个在 8000 端口上运行的 Node.js 应用:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:8000; # 反向代理到后端服务
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
上面的配置将所有到 api.example.com
的请求转发到本地的 8000 端口。
五、负载均衡
Nginx 还可以配置负载均衡。假设你有两个后端服务器,分别为 http://backend1.example.com
和 http://backend2.example.com
:
http {
upstream myapp {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name myapp.example.com;
location / {
proxy_pass http://myapp; # 代理到上面定义的 upstream
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
六、安全设置
为了提高 Nginx 的安全性,你可以进行如下配置:
- 禁用不必要的 HTTP 方法,例如 DELETE 和 TRACE:
server {
...
if ($request_method !~ ^(GET|POST)$) {
return 444; # 返回444状态码
}
}
- 设置 SSL/TLS 加密(需要申请 SSL 证书):
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
location / {
...
}
}
七、重启 Nginx
每次更新配置文件后,记得使用以下命令重启 Nginx:
sudo systemctl restart nginx
八、常见问题解决
- 403 Forbidden 错误:检查文件权限,确保 Nginx 用户(通常是
www-data
)有权限访问你的网站目录。 - 504 Gateway Timeout 错误:确认后端服务正常运行,并增加
proxy_read_timeout
的值。
通过以上的配置,你就可以基本掌握 Nginx 的使用。Nginx 的灵活性和性能使其成为 Web 服务器的首选,掌握它能够帮助你更好地管理和优化你的应用服务器。