以下是一个简单的 nginx 配置文件服务器示例,包含静态文件服务和文件上传服务:

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;

    server {
        listen 80;
        server_name example.com;

        # 静态文件目录
        root /var/www/example.com;

        # 静态文件缓存
        expires 1d;

        # 文件大小限制
        client_max_body_size 10M;

        # 静态文件访问
        location / {
            try_files $uri $uri/ =404;
        }

        # 文件上传
        location /upload {
            # 限制 POST 方法
            if ($request_method != POST) {
                return 405;
            }

            # 限制文件类型
            if ($content_type !~* 'multipart/form-data') {
                return 415;
            }

            # 限制文件大小
            client_body_buffer_size 10M;
            client_max_body_size 10M;

            # 上传文件目录
            upload_pass /upload.php;

            # 上传文件大小限制
            upload_set_form_field $upload_field_name.name '$upload_file_name';
            upload_set_form_field $upload_field_name.path '$upload_tmp_path';
            upload_set_form_field $upload_field_name.content_type '$upload_content_type';
            upload_set_form_field $upload_field_name.size '$upload_file_size';
            upload_set_form_field $upload_field_name.md5 '$upload_file_md5';
            upload_set_form_field $upload_field_name.sha1 '$upload_file_sha1';
            upload_set_form_field $upload_field_name.sha256 '$upload_file_sha256';
            upload_set_form_field $upload_field_name.sha512 '$upload_file_sha512';
            upload_set_form_field $upload_field_name.timestamp '$upload_timestamp';
            upload_set_form_field $upload_field_name.ip '$remote_addr';
            upload_set_form_field $upload_field_name.agent '$http_user_agent';
            upload_set_form_field $upload_field_name.referer '$http_referer';
            upload_set_form_field $upload_field_name.token '$http_token';
            upload_set_form_field $upload_field_name.signature '$http_signature';
            upload_set_form_field $upload_field_name.expires '$http_expires';
            upload_set_form_field $upload_field_name.random '$http_random';
            upload_set_form_field $upload_field_name.uuid '$http_uuid';
            upload_set_form_field $upload_field_name.width '$http_width';
            upload_set_form_field $upload_field_name.height '$http_height';
            upload_set_form_field $upload_field_name.format '$http_format';
            upload_set_form_field $upload_field_name.quality '$http_quality';
            upload_set_form_field $upload_field_name.watermark '$http_watermark';
            upload_set_form_field $upload_field_name.crop '$http_crop';
            upload_set_form_field $upload_field_name.trim '$http_trim';
            upload_set_form_field $upload_field_name.blur '$http_blur';
            upload_set_form_field $upload_field_name.sharpen '$http_sharpen';
            upload_set_form_field $upload_field_name.rotate '$http_rotate';
            upload_set_form_field $upload_field_name.flip '$http_flip';
            upload_set_form_field $upload_field_name.flop '$http_flop';
            upload_set_form_field $upload_field_name.canvas '$http_canvas';
            upload_set_form_field $upload_field_name.gravity '$http_gravity';
            upload_set_form_field $upload_field_name.background '$http_background';
            upload_set_form_field $upload_field_name.border '$http_border';
            upload_set_form_field $upload_field_name.quality '$http_quality';

            # 上传文件重命名
            upload_rename_file_path off;

            # 上传文件权限
            upload_set_access_rights 0644;

            # 上传文件类型
            upload_set_mime_type application/octet-stream;

            # 上传文件日志
            access_log /var/log/nginx/upload.access.log;

            # 上传文件错误日志
            error_log /var/log/nginx/upload.error.log;

            # 上传文件完成后的跳转
            upload_cleanup 400 404 499 500-503 /upload.php;

            # 上传文件完成后的返回值
            upload_pass_args on;
            upload_pass_args_expires on;
            upload_pass_args_status on;
            upload_pass_args_ip on;
            upload_pass_args_agent on;
            upload_pass_args_referer on;
            upload_pass_args_token on;
            upload_pass_args_signature on;
            upload_pass_args_expires on;
            upload_pass_args_random on;
            upload_pass_args_uuid on;
            upload_pass_args_width on;
            upload_pass_args_height on;
            upload_pass_args_format on;
            upload_pass_args_quality on;
            upload_pass_args_watermark on;
            upload_pass_args_crop on;
            upload_pass_args_trim on;
            upload_pass_args_blur on;
            upload_pass_args_sharpen on;
            upload_pass_args_rotate on;
            upload_pass_args_flip on;
            upload_pass_args_flop on;
            upload_pass_args_canvas on;
            upload_pass_args_gravity on;
            upload_pass_args_background on;
            upload_pass_args_border on;
            upload_pass_args_quality on;
        }
    }
}

功能说明

  1. 静态文件服务

    • 支持缓存,expires 1d 设置缓存时间为 1 天。
    • 限制文件大小,client_max_body_size 10M 限制请求体大小为 10MB。
    • 静态文件目录为 /var/www/example.com
  2. 文件上传服务

    • 限制上传方法为 POST 方法。
    • 限制文件类型为 multipart/form-data
    • 限制上传文件大小为 10MB。
    • 将上传文件传递给 /upload.php 处理。
    • 上传文件完成后的跳转地址为 /upload.php
    • 上传文件完成后的返回值包含文件信息、请求信息等。

配置说明

  • upload_set_form_field 指令用于将上传文件信息作为参数传递给 /upload.php
  • upload_rename_file_path 指令用于控制是否重命名上传文件。
  • upload_set_access_rights 指令用于设置上传文件的权限。
  • upload_set_mime_type 指令用于设置上传文件的 MIME 类型。
  • upload_pass_args 指令用于控制是否将请求参数传递给 /upload.php

上述配置只是示例,实际使用中需要根据具体情况进行调整。

Nginx 配置文件服务器:静态文件服务和文件上传功能

原文地址: https://www.cveoy.top/t/topic/nSD0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录