Nginx常用配置

118 阅读1分钟

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_certificatessl_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;
    }
}
  • allowdeny:限制访问的 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 一些常见的配置示例,可以根据具体需求进行调整和扩展。