Nginx 是一个高性能的开源反向代理服务器和 Web 服务器。它可以用来处理静态文件、负载均衡、反向代理、HTTP 缓存、SSL 终结等任务。以下是一些常见的 Nginx 转发和代理配置示例:
1. 静态文件服务器配置
假设你有一个静态网站,可以使用 Nginx 来直接提供静态文件服务:
server {
listen 80;
server_name example.com;
root /var/www/html; # 静态文件存放的根目录
location / {
try_files $uri $uri/ =404;
}
}
listen
指定 Nginx 监听的端口和协议。server_name
指定该虚拟主机的域名。root
指定静态文件的根目录。location /
块定义了请求的处理规则,try_files
指令尝试匹配请求的 URI,并在文件系统中查找对应的文件或目录。
2. 反向代理配置
假设你有一个后端应用在本地运行在 http://localhost:8080
,可以使用 Nginx 作为反向代理来转发请求:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
proxy_pass
指令将请求转发到指定的后端服务器地址。proxy_set_header
指令用于设置请求头,确保后端服务器能够获取到正确的客户端信息。
3. 负载均衡配置
如果有多个后端服务器提供相同服务,可以配置 Nginx 实现负载均衡:
upstream backend_servers {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
upstream
块定义了后端服务器的集群。proxy_pass
指令将请求转发给定义的后端服务器集群。
4. HTTPS 配置(SSL 终结)
Nginx 可以作为 SSL 终结点来处理 HTTPS 请求,并将明文请求转发给后端服务器:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
listen 443 ssl
指定监听的端口和协议为 HTTPS,并指定 SSL 证书和私钥。ssl_certificate
和ssl_certificate_key
指令指定 SSL 证书和私钥的路径。
5. WebSocket 配置
如果后端服务器支持 WebSocket 协议,可以配置 Nginx 支持 WebSocket 的转发:
server {
listen 80;
server_name example.com;
location /websocket {
proxy_pass http://backend_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
proxy_http_version 1.1
指定 HTTP 协议版本为 1.1,支持 WebSocket。proxy_set_header Upgrade $http_upgrade
和proxy_set_header Connection "Upgrade"
设置协议升级头,以支持 WebSocket 协议。
总结
以上是几种常见的 Nginx 配置示例,涵盖了静态文件服务、反向代理、负载均衡、HTTPS 配置和 WebSocket 配置等常见用例。根据实际需求和具体场景,可以进一步调整和扩展这些配置。使用 Nginx 可以极大地提升 Web 应用的性能、安全性和可靠性。