nginx有哪些常见功能及配置示例

100人浏览   2024-08-13 09:17:17


HTTP服务器功能:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            root /var/www/html;
            index index.html;
        }
    }
}

动态请求处理:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

认证和授权:

http {
    server {
        listen 80;
        server_name example.com;

        location /restricted {
            auth_basic "Restricted Area";
            auth_basic_user_file /etc/nginx/.htpasswd;

            proxy_pass http://backend;
        }
    }
}

缓存和性能优化:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_cache my_cache;
            proxy_cache_valid 200 1h;
            proxy_cache_use_stale error timeout updating;

            proxy_pass http://backend;
        }
    }
}

限流和防刷:

http {
    limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;

    server {
        listen 80;
        server_name example.com;

        location /api {
            limit_req zone=ip_limit burst=20;
            proxy_pass http://backend;
        }
    }
}

日志和监控:

http {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

WebSocket支持:

http {
    server {
        listen 80;
        server_name example.com;

        location /websocket {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }
}

SSL/TLS支持:

http {
    server {
        listen 443 ssl;
        server_name example.com;

        ssl_certificate /path/to/certificate.crt;
        ssl_certificate_key /path/to/private_key.key;

        location / {
            proxy_pass http://backend;
        }
    }
}

负载均衡:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

HTTP/2支持:

http {
    server {
        listen 443 ssl http2;
        server_name example.com;

        ssl_certificate /path/to/certificate.crt;
        ssl_certificate_key /path/to/private_key.key;

        location / {
            proxy_pass http://backend;
        }
    }
}

URL重写和重定向:

http {
    server {
        listen 80;
        server_name example.com;

        location /old {
            rewrite ^/old/(.*)$ /new/$1 permanent;
        }

        location / {
            proxy_pass http://backend;
        }
    }
}

反向代理:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

CORS支持:

http {
    server {
        listen 80;
        server_name example.com;

        location /api {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            
            proxy_pass http://backend;
        }
    }
}

Gzip压缩:

http {
    gzip on;
    gzip_types text/plain text/css application/json;

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

图片处理:

http {
    server {
        listen 80;
        server_name example.com;

        location /images {
            try_files $uri @image_processing;
        }

        location @image_processing {
            proxy_pass http://image_backend;
        }
    }
}

安全防护:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            limit_req zone=ip_limit burst=20;
            proxy_pass http://backend;
        }
    }
}

认证代理:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://backend;

            auth_basic "Restricted Area";
            auth_basic_user_file /etc/nginx/.htpasswd;
        }
    }
}

请求转发和过滤:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            if ($args ~* "debug=true") {
                return 404;
            }

            proxy_pass http://backend;
        }
    }
}

WebSocket反向代理:

http {
    server {
        listen 80;
        server_name example.com;

        location /websocket {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }
}

相关推荐