Nginx 是一个强大的 web 服务器和反向代理服务器,常用于负载均衡、缓存以及作为 HTTP 服务器。以下是一些常见的 Nginx 配置示例:
1. 基础 HTTP 服务器配置
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
listen 80;:监听 80 端口。server_name example.com;:定义服务器名称(域名)。root /var/www/html;:设置 web 根目录。index:定义默认的首页文件。
2. 重定向配置
server {
listen 80;
server_name oldsite.com;
return 301 http://newsite.com$request_uri;
}
return 301:将所有访问 oldsite.com 的请求重定向到 newsite.com。
3. 反向代理配置
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
proxy_pass:将请求转发到后台的应用服务器。proxy_set_header:设置头部信息,传递客户端的 IP、Host 等信息。
4. 负载均衡配置
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
upstream:定义负载均衡的服务器池。weight:指定服务器的权重,数字越大,接受的请求越多。
5. HTTPS 配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /var/www/html;
index index.html;
}
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
ssl_certificate和ssl_certificate_key:配置 SSL 证书和私钥路径。ssl_protocols:指定支持的 SSL/TLS 协议。ssl_ciphers:配置加密套件。
6. 限制访问
server {
listen 80;
server_name example.com;
location /admin {
allow 192.168.1.0/24;
deny all;
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
allow和deny:限制访问的 IP 范围。auth_basic:设置基本的 HTTP 认证。.htpasswd:存储用户和密码的文件。
7. 静态资源缓存配置
server {
listen 80;
server_name example.com;
location /static/ {
root /var/www/html;
expires 30d;
add_header Cache-Control "public";
}
}
expires 30d:设置静态资源的缓存时间为 30 天。add_header Cache-Control "public":添加Cache-Control头部。
这些是 Nginx 一些常见的配置示例,可以根据具体需求进行调整和扩展。