From 8c3d2b1aac4dfd9c5d556c5370a9367795d4be05 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 20 Aug 2025 06:20:32 -0400 Subject: [PATCH] Stuck on a bug with auth, but got to push anyway. --- IMPLEMENTATION.md | 289 +- README.md | 121 +- {config => Trash}/nginx/ginxsom.conf | 0 .../nginx/restart-nginx.sh | 0 start-fcgi.sh => Trash/nginx/start-fcgi.sh | 0 build/ginxsom-fcgi | Bin 165872 -> 191592 bytes build/main.o | Bin 58096 -> 102600 bytes config/local-nginx.conf | 14 + config/systemd/ginxsom.service | 47 - db/ginxsom.db | Bin 36864 -> 122880 bytes db/ginxsom.db.backup.1755624647 | Bin 0 -> 36864 bytes db/schema.sql | 170 + file_put.sh | 250 + logs/access.log | 30 + logs/error.log | 8378 +++++++++++++++++ logs/nginx.pid | 2 +- restart-all.sh | 229 + src/main.c | 1064 ++- 18 files changed, 10443 insertions(+), 151 deletions(-) rename {config => Trash}/nginx/ginxsom.conf (100%) rename restart-nginx.sh => Trash/nginx/restart-nginx.sh (100%) rename start-fcgi.sh => Trash/nginx/start-fcgi.sh (100%) delete mode 100644 config/systemd/ginxsom.service create mode 100644 db/ginxsom.db.backup.1755624647 create mode 100755 file_put.sh create mode 100755 restart-all.sh diff --git a/IMPLEMENTATION.md b/IMPLEMENTATION.md index 23e3162..7d789fb 100644 --- a/IMPLEMENTATION.md +++ b/IMPLEMENTATION.md @@ -102,31 +102,31 @@ This document outlines the implementation plan for ginxsom, a FastCGI-based Blos - [x] Implement request logging ### 2.5 List Blobs Endpoint -- [ ] Implement `GET /list/` endpoint - - [ ] Extract pubkey from URL path - - [ ] Query database for blobs uploaded by specified pubkey - - [ ] Support `since` and `until` query parameters for date filtering - - [ ] Return JSON array of blob descriptors - - [ ] Handle empty results gracefully - - [ ] Implement optional authorization with kind 24242 event validation - - [ ] Validate `t` tag is set to "list" - - [ ] Check authorization expiration - - [ ] Verify event signature and structure +- [x] Implement `GET /list/` endpoint + - [x] Extract pubkey from URL path + - [x] Query database for blobs uploaded by specified pubkey + - [x] Support `since` and `until` query parameters for date filtering + - [x] Return JSON array of blob descriptors + - [x] Handle empty results gracefully + - [x] Implement optional authorization with kind 24242 event validation + - [x] Validate `t` tag is set to "list" + - [x] Check authorization expiration + - [x] Verify event signature and structure ### 2.6 Delete Blob Endpoint -- [ ] Implement `DELETE /` endpoint - - [ ] Extract SHA-256 hash from URL path - - [ ] Require authorization with kind 24242 event validation - - [ ] Validate `t` tag is set to "delete" - - [ ] Verify at least one `x` tag matches the requested hash - - [ ] Check authorization expiration - - [ ] Verify event signature and structure - - [ ] Check blob exists in database - - [ ] Verify uploader_pubkey matches authorized pubkey (ownership check) - - [ ] Remove blob file from filesystem - - [ ] Remove blob metadata from database - - [ ] Handle file deletion errors gracefully - - [ ] Return appropriate success/error responses +- [x] Implement `DELETE /` endpoint + - [x] Extract SHA-256 hash from URL path + - [x] Require authorization with kind 24242 event validation + - [x] Validate `t` tag is set to "delete" + - [x] Verify at least one `x` tag matches the requested hash + - [x] Check authorization expiration + - [x] Verify event signature and structure + - [x] Check blob exists in database + - [x] Verify uploader_pubkey matches authorized pubkey (ownership check) + - [x] Remove blob file from filesystem + - [x] Remove blob metadata from database + - [x] Handle file deletion errors gracefully + - [x] Return appropriate success/error responses ### 2.7 Testing & Validation - [x] Test uploads without authentication @@ -148,30 +148,179 @@ This document outlines the implementation plan for ginxsom, a FastCGI-based Blos - [ ] Authentication requirements - [ ] Rate limiting settings - [ ] Storage quota limits + - [ ] Hash-based banning/filtering -### 3.2 HEAD /upload Endpoint -- [ ] Implement `HEAD /upload` endpoint - - [ ] Return upload requirements in headers - - [ ] Handle optional Authorization header - - [ ] Return proper status codes for policy checks - - [ ] Add custom headers for requirements +### 3.2 HEAD /upload Endpoint Implementation +- [ ] Implement `HEAD /upload` endpoint for pre-flight upload validation + - [ ] Parse client headers: + - [ ] `X-SHA-256`: blob's SHA-256 hash + - [ ] `X-Content-Length`: blob size in bytes + - [ ] `X-Content-Type`: blob's MIME type + - [ ] Handle optional Authorization header (same as PUT /upload) + - [ ] Perform validation checks without file transfer: + - [ ] Validate SHA-256 format + - [ ] Check file size against limits + - [ ] Validate MIME type restrictions + - [ ] Check authentication if required + - [ ] Check if hash already exists (duplicate detection) + - [ ] Check if hash is banned + - [ ] Return appropriate HTTP status codes: + - [ ] `200 OK` - upload can proceed + - [ ] `400 Bad Request` - invalid headers + - [ ] `401 Unauthorized` - auth required + - [ ] `403 Forbidden` - not permitted (banned hash, etc.) + - [ ] `411 Length Required` - missing content length + - [ ] `413 Content Too Large` - file too large + - [ ] `415 Unsupported Media Type` - invalid MIME type + - [ ] Add `X-Reason` header with human-readable error messages -### 3.3 Upload Validation -- [ ] Implement pre-upload validation - - [ ] Check file size before processing - - [ ] Validate MIME types if restricted - - [ ] Check authentication requirements - - [ ] Verify user permissions/quotas +### 3.3 Upload Pre-validation Logic +- [ ] Create validation functions that can be shared between HEAD and PUT endpoints + - [ ] `validate_upload_headers()` - check required headers present and valid + - [ ] `check_file_size_limits()` - enforce maximum size restrictions + - [ ] `check_mime_type_allowed()` - validate against allowed types list + - [ ] `check_hash_restrictions()` - check banned hashes, duplicates + - [ ] `check_upload_permissions()` - user-specific upload rights -### 3.4 Testing & Validation -- [ ] Test upload requirements endpoint -- [ ] Test policy enforcement -- [ ] Test with various client scenarios -- [ ] Verify error responses match spec +### 3.4 DOS Protection Benefits +- [ ] Implement early rejection before file transfer: + - [ ] Authentication happens before any file data sent + - [ ] Size validation prevents large file uploads that would be rejected + - [ ] MIME type checking prevents unwanted file types + - [ ] Hash checking prevents duplicate uploads +- [ ] Update PUT /upload to use same validation functions for consistency + +### 3.5 Client Integration Support +- [ ] Update nginx configuration to properly handle HEAD requests to /upload +- [ ] Ensure FastCGI handles HEAD method for /upload endpoint +- [ ] Add CORS headers for preflight requests + +### 3.6 Testing & Validation +- [ ] Test HEAD /upload with valid headers +- [ ] Test various error scenarios (missing headers, invalid formats) +- [ ] Test authorization requirements +- [ ] Test policy enforcement (size limits, MIME types, banned hashes) +- [ ] Verify error responses match BUD-06 specification +- [ ] Test client workflow: HEAD check → PUT upload +- [ ] Verify DOS protection effectiveness --- -## Phase 4: Optional Features +## Phase 4: Advanced Authentication & Administration System + +### 4.1 Flexible Authentication Rules System + +#### 4.1.1 Database Schema Extension +- [ ] Create authentication rules tables + - [ ] `auth_rules` table: rule_type, rule_target, operation, rule_value, enabled, expires_at + - [ ] `auth_cache` table: performance caching for rule evaluation results + - [ ] Add indexes on rule_type, rule_target, operation for performance + +#### 4.1.2 Authentication Rule Types Implementation +- [ ] Basic rule types: + - [ ] `pubkey_whitelist`: Only specific pubkeys allowed + - [ ] `pubkey_blacklist`: Specific pubkeys banned + - [ ] `hash_blacklist`: Specific file hashes cannot be uploaded + - [ ] `mime_type_whitelist`: Only specific content types allowed + - [ ] `mime_type_blacklist`: Specific content types banned +- [ ] Advanced rule types: + - [ ] `rate_limit`: Limit operations per pubkey/IP per time period + - [ ] `size_limit`: Per-pubkey or global size limits + - [ ] `conditional`: Complex JSON-based rules (time-based, size-based, etc.) + +#### 4.1.3 Rule Evaluation Engine +- [ ] Core authentication functions: + - [ ] `evaluate_auth_rules()`: Main rule evaluation with caching + - [ ] `check_rule_cache()`: Performance optimization layer + - [ ] `process_rule_priority()`: Handle rule precedence and conflicts + - [ ] `update_auth_cache()`: Store evaluation results for reuse +- [ ] Integration points: + - [ ] Extend `handle_upload_request()` with rule evaluation + - [ ] Extend `handle_delete_request()` with rule evaluation + - [ ] Extend `handle_list_request()` with rule evaluation (optional) + +#### 4.1.4 Rule Management Interface +- [ ] SQL-based rule management: + - [ ] `add_auth_rule()`: Add new authentication rules + - [ ] `remove_auth_rule()`: Remove rules by ID + - [ ] `list_auth_rules()`: Query existing rules with filters + - [ ] `update_auth_rule()`: Modify existing rule parameters + +### 4.2 Nostr-Native Administrative Interface + +#### 4.2.1 Server Identity Management +- [ ] Server keypair generation and storage: + - [ ] Generate server public/private keypair on first run + - [ ] Store server pubkey in `server_config` table + - [ ] Secure private key storage (encrypted file or environment) + - [ ] Key rotation capabilities for security + +#### 4.2.2 Administrator Management System +- [ ] Administrator database schema: + - [ ] `administrators` table: pubkey, permissions, added_by, expires_at + - [ ] Permission levels: rules, config, users, stats, * (full access) + - [ ] Initial admin setup during server deployment +- [ ] Administrative functions: + - [ ] `check_admin_permissions()`: Verify admin authorization + - [ ] `add_administrator()`: Grant admin privileges + - [ ] `remove_administrator()`: Revoke admin privileges + - [ ] `list_administrators()`: Query admin list with permissions + +#### 4.2.3 Administrative Event Types +- [ ] Event kind definitions: + - [ ] Kind 30242: Administrative commands (rule_add, rule_remove, config_set, etc.) + - [ ] Kind 30243: Administrative queries (stats_get, rule_list, audit_log, etc.) + - [ ] Kind 30244: Administrative responses (command results, query data) +- [ ] Command implementations: + - [ ] Rule management: `rule_add`, `rule_remove`, `rule_update`, `rule_list` + - [ ] System management: `config_set`, `config_get`, `admin_add`, `admin_remove` + - [ ] Query operations: `stats_get`, `blob_list`, `audit_log`, `storage_cleanup` + +#### 4.2.4 Administrative Event Processing +- [ ] HTTP administrative endpoint: + - [ ] `POST /admin` with nostr event authorization + - [ ] JSON command interface with parameter validation + - [ ] Synchronous response with operation results +- [ ] Direct nostr relay integration (future enhancement): + - [ ] Subscribe to administrative events on configured relays + - [ ] Real-time event processing and response + - [ ] Publish response events back to relays + +#### 4.2.5 Administrative Audit Trail +- [ ] Administrative logging system: + - [ ] `admin_log` table: track all administrative actions + - [ ] Event ID references for nostr event traceability + - [ ] Success/failure tracking with detailed error messages + - [ ] Audit query capabilities for compliance + +#### 4.2.6 Security & Permission Framework +- [ ] Multi-level permission system: + - [ ] Granular permissions: rules, config, users, stats + - [ ] Permission inheritance and delegation + - [ ] Time-limited administrative access (expires_at) +- [ ] Authentication security: + - [ ] Strong nostr signature validation + - [ ] Administrator authorization chain verification + - [ ] Command-specific permission checks + - [ ] Rate limiting for administrative operations + +### 4.3 Integration & Testing +- [ ] Authentication system integration: + - [ ] Integrate rule evaluation into existing authentication flow + - [ ] Maintain backward compatibility with nostr-only authentication + - [ ] Performance testing with rule caching +- [ ] Administrative system testing: + - [ ] Test all administrative commands and queries + - [ ] Verify permission enforcement and security + - [ ] Test audit logging and compliance features + - [ ] Load testing for administrative operations + +--- + +## Phase 5: Optional Features +--- + +## Phase 5: Optional Features ### 4.1 User Server Lists (BUD-03) - Optional - [ ] Implement server list advertisement @@ -230,15 +379,21 @@ This document outlines the implementation plan for ginxsom, a FastCGI-based Blos - [x] Authenticated uploads working (Nostr kind 24242 event validation) - [x] Proper error handling for upload scenarios - [x] Database metadata storage during upload (with uploader_pubkey and filename) -- [ ] List blobs endpoint implemented (GET /list/) -- [ ] Delete blob endpoint implemented (DELETE /) +- [x] List blobs endpoint implemented (GET /list/) +- [x] Delete blob endpoint implemented (DELETE /) ### Milestone 3: Policy Compliance (Phase 3 Pending) - [ ] Upload requirements implemented - [ ] Server policies configurable - [ ] Spec compliance verified -### Milestone 4: Production Ready (Phase 4 Complete) +### Milestone 4: Advanced Authentication (Phase 4 Complete) +- [ ] Flexible authentication rules system operational +- [ ] Nostr-native administrative interface implemented +- [ ] Rule evaluation engine with caching performance +- [ ] Administrative audit trail and compliance features + +### Milestone 5: Production Ready (Phase 5 Complete) - Optional features implemented as needed - Performance optimized - Security hardened @@ -274,6 +429,51 @@ This document outlines the implementation plan for ginxsom, a FastCGI-based Blos --- +## Future Improvements + +### Upload Security & Performance Enhancements + +**Current Issue**: The existing upload flow has a DOS vulnerability where large files are loaded entirely into memory before authentication occurs. This allows unauthenticated attackers to exhaust server memory. + +**Current Flow**: +``` +Client → nginx → FastCGI ginxsom + ├─ reads entire file into memory (malloc + fread) + ├─ validates auth (after file in memory) + └─ saves to blobs/ or errors +``` + +**Proposed Solution - nginx Upload Module**: +``` +Client → nginx upload module → temp file → FastCGI ginxsom + ├─ saves to /tmp/uploads/ ├─ validates auth quickly + └─ passes metadata only ├─ moves file to blobs/ + └─ or deletes temp file +``` + +**Benefits**: +- Eliminates DOS vulnerability - nginx handles large files efficiently +- Fast auth validation - no waiting for full upload +- Leverages nginx strengths - what it's designed for +- Better scalability - memory usage independent of file size + +**Implementation Requirements**: +- nginx upload module configuration +- Temp file cleanup handling +- Modified FastCGI code to process file paths instead of stdin +- Proper error handling for temp file operations + +**Alternative Enhancement - HTTP 100 Continue**: +Could propose new Blossom BUD for two-phase upload: +1. Client sends headers with `Expect: 100-continue` + auth event +2. Server validates early (signature, expiration, pubkey) +3. Server responds `100 Continue` or `401 Unauthorized` +4. Client only sends file data if authorized + +**Priority**: Implement after core BUD compliance is complete. + +--- + ## Security Considerations - [ ] Input validation on all endpoints @@ -283,6 +483,7 @@ This document outlines the implementation plan for ginxsom, a FastCGI-based Blos - [ ] Memory safety in C implementation - [ ] Proper error message sanitization - [ ] Log security (no sensitive data) +- [ ] **Upload DOS vulnerability** - Current implementation vulnerable to memory exhaustion attacks --- diff --git a/README.md b/README.md index 11e9675..a4f0d26 100644 --- a/README.md +++ b/README.md @@ -41,19 +41,52 @@ ginxsom is a Blossom protocol server implemented as a FastCGI application that i ginxsom implements the following Blossom Upgrade Documents (BUDs): - **BUD-01**: Server requirements and blob retrieval ✅ -- **BUD-02**: Blob upload and management ✅ -- **BUD-06**: Upload requirements ✅ +- **BUD-02**: Blob upload and management ✅ *(newly completed - includes DELETE endpoint)* +- **BUD-06**: Upload requirements ⏳ *(planned - not yet implemented)* ### Supported Endpoints -| Endpoint | Method | Description | Handler | -|----------|---------|-------------|---------| -| `/` | GET | Retrieve blob | nginx → disk | -| `/` | HEAD | Check blob exists | nginx → disk | -| `/upload` | PUT | Upload new blob | nginx → FastCGI ginxsom | -| `/upload` | HEAD | Check upload requirements | nginx → FastCGI ginxsom | -| `/list/` | GET | List user's blobs | nginx → FastCGI ginxsom | -| `/` | DELETE | Delete blob | nginx → FastCGI ginxsom | +| Endpoint | Method | Description | Handler | Status | +|----------|---------|-------------|---------|---------| +| `/` | GET | Retrieve blob | nginx → disk | ✅ **Implemented** | +| `/` | HEAD | Check blob exists | nginx → FastCGI ginxsom | ✅ **Implemented** | +| `/upload` | PUT | Upload new blob | nginx → FastCGI ginxsom | ✅ **Implemented** | +| `/upload` | HEAD | Check upload requirements | nginx → FastCGI ginxsom | ⏳ **BUD-06 Planned** | +| `/list/` | GET | List user's blobs | nginx → FastCGI ginxsom | ✅ **Implemented** | +| `/` | DELETE | Delete blob | nginx → FastCGI ginxsom | ✅ **Recently Added** | + +## Recent Updates + +### BUD-02 Completion: DELETE Endpoint Implementation + +ginxsom now fully implements **BUD-02: Blob upload and management** with the recent addition of the DELETE endpoint. This completes the core blob management functionality: + +**New DELETE Endpoint Features:** +- **Authenticated Deletion**: Requires valid nostr kind 24242 event with `t` tag set to `"delete"` +- **Hash Validation**: Must include `x` tag matching the blob's SHA-256 hash +- **Ownership Verification**: Only the original uploader can delete their blobs +- **Complete Cleanup**: Removes both file from disk and metadata from database +- **Error Handling**: Proper HTTP status codes for various failure scenarios + +**Technical Implementation:** +```bash +# Delete a blob (requires nostr authorization) +curl -X DELETE http://localhost:9001/b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f553 \ + -H "Authorization: Nostr eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." + +# Successful deletion returns 200 OK +# Failed authorization returns 401 Unauthorized +# Blob not found returns 404 Not Found +# Wrong ownership returns 403 Forbidden +``` + +**Security Features:** +- Event signature validation using nostr cryptographic verification +- Expiration checking to prevent replay attacks +- Ownership validation via uploader_pubkey matching +- Atomic operations (both filesystem and database cleanup succeed or fail together) + +This implementation makes ginxsom a fully functional Blossom server for core blob operations (upload, retrieve, list, delete) with the remaining BUD-06 (upload requirements) planned for the next development phase. ## Installation @@ -111,6 +144,8 @@ rate_limit_uploads = 10 # per minute ### nginx Configuration +#### Production Configuration + Add to your nginx configuration: ```nginx @@ -155,6 +190,72 @@ server { } ``` +#### Local Development Configuration + +For local development, use the provided `config/local-nginx.conf`: + +```nginx +# Local development server (runs on port 9001) +server { + listen 9001; + server_name localhost; + root blobs; # Relative to project directory + + # FastCGI backend + upstream fastcgi_backend { + server unix:/tmp/ginxsom-fcgi.sock; + } + + # DELETE endpoint - requires authentication + location ~ "^/([a-f0-9]{64}).*$" { + if ($request_method != DELETE) { + return 404; + } + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + } + + # Static blob serving with extension fallback + location ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" { + limit_except HEAD GET { deny all; } + + # HEAD requests go to FastCGI + if ($request_method = HEAD) { + rewrite ^/(.*)$ /fcgi-head/$1 last; + } + + # GET requests served directly with extension fallback + try_files /$1.jpg /$1.jpeg /$1.png /$1.webp /$1.gif /$1.pdf /$1.mp4 /$1.mp3 /$1.txt /$1.md =404; + } + + # Upload endpoint + location /upload { + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + if ($request_method !~ ^(PUT)$ ) { return 405; } + } + + # List blobs endpoint + location ~ "^/list/([a-f0-9]{64}).*$" { + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + if ($request_method !~ ^(GET)$ ) { return 405; } + } +} +``` + +Start local development with: +```bash +# Start FastCGI daemon +./start-fcgi.sh + +# Start nginx (uses local config) +./restart-nginx.sh +``` + ## Usage ### Starting the Server diff --git a/config/nginx/ginxsom.conf b/Trash/nginx/ginxsom.conf similarity index 100% rename from config/nginx/ginxsom.conf rename to Trash/nginx/ginxsom.conf diff --git a/restart-nginx.sh b/Trash/nginx/restart-nginx.sh similarity index 100% rename from restart-nginx.sh rename to Trash/nginx/restart-nginx.sh diff --git a/start-fcgi.sh b/Trash/nginx/start-fcgi.sh similarity index 100% rename from start-fcgi.sh rename to Trash/nginx/start-fcgi.sh diff --git a/build/ginxsom-fcgi b/build/ginxsom-fcgi index 14e9880cd2db2a73f5ecac77349f3d6758b12d39..8e9147837a1084d28c3e2a7890c3448ba58403a9 100755 GIT binary patch literal 191592 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 diff --git a/build/main.o b/build/main.o index 8230a9af4ecd7e6ca127a01d52226d5e66fe8856..4dc0dfb3d3faaeb83d80e551aa4030bb19d45e27 100644 GIT binary patch literal 102600 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 literal 58096 zcmd6Q34B!5_5WiDvSb~zu?`r?DM>Q{;FoY7_Exz*9bwI7E% zMzhSeM~h0*Uz~DU{Z@A4>*&!xmVSG+ zuM&6pG&huX$XMq{E+vwF)ECl&r}bC;icZAx24?~Yi+Z0jXBXN%CXfdWRvk)Q)z`(! z$UJ3?hY}=pb#+EGspkiUNZU8nq4r#^f*pMxZ`;hWIiD|!fAv>Vm)*x_v&$@5_A3RF zCl3KnUdqI_NApY4TeK%{$h1#Jpoq$LW?k0KoLMurFEf6@3YL0Xm5%>~$gZO;e~xul zm1|*a1n)ETdv!5eCH)#Hn>hy|lBp^pM$=QGI>!Z+gIp&&M9$SurNyQ< zMmyG~j)-k&~J>k9qKD)K6>Y;@U` zN=fpyz0~L*>NtXZZRw+27xuLc*}1&6+n+XZNDabNb0sdjejP43ffy)&@f}%s=Zt@R zFJtxhGOqbv#=`GqRCH%VJNG8*IpkYrLJ%rl-*q? z&hnIP1bA!9(p$+|A4hK&qw7{Rt=slRaVk#kpWPz=!O^nzJT3d_E9RY+=9sUq85}Tq1!N#O%58VmpqcEI%ezX+5E1(CI0x)SX(ix z%dThdnp|&ObBmEsm zzw~-7aAV&C2ztwkQsjB8obP$9izvhlA*3X|4d!NSugD*%{dR1B#>_u_o%9J+%J#dk zePkw!=P&IkS63?uR{3i(*=_sMWG0%fpqR>5yoQDsS~mHWp?QzW-z{!ErtC6+=+X4! zio$mKl458~Z1+)U#D`12yZ3a*33cpFJhqv36D=|QxDxRyW%2X>Rprm(m8Bn5ytn8S z7WE<>mo2Mjy=jV`Pe+fJu(P$piW$`@I@6M@|_nA2=Q{|`TWn`v~r&XTO zE%X3Q(^H`iZuun_^rAXkMZYLB4B1+O%j-v(LDP^tgx%|S3NJKh==o%HSp&t*_d*>> zYK>CX_G}J99j~NzrCHCeY`5PMAl;r;d*=@*oA798`9fx8bz*83niFNYPYEw47PX$k zI<~g5AHMv=tZxw2B3ntq1bAA`13wAPbi>31l?8lvP~0(rCT8nq*6sADCO z{V2Lc7PuQ$Nc<`B7he>beT}tR+ka1X@|{>tZof{?>ulVp*tM9Q*>u3jBkUyFmF8wn zL>{5v0+*RzJ+#l9Ncs!1IB!b*P3BTGIeK>Kj$cqyq(+7={WVukPqLQoxSqiwOLu%i z-)80|+ccrlO(nL*zLHA4?4y`JE0AjQ28~&!YJSIisoi;&W~!>t)8sI6s<$?BS{G^O znDvs;as_D@YHy@kFWqr@kD7KJM<><#fktzw{x{x^Iq7F*D{d|f=OuY3l5RY`muk?m zj6;T5(5VUNnqpFfS}2-cC(6GPNq4FJ9W{Lrt)rom&Hn1+y;!JZ8^u-n+ESL@%m$zw zuj~92=T6Lw(z{WBoogb&2F0+)%cbu|Y0(9Gx91fRAk&Z?qy_C1l-XM~vCewhWF&X0 z&nr}7X_%D#L)mBGs^&*K4`fRV<11BL3hJh|rQVaV^uK6hOzI|UCvH5BhJEuazo+R| zaj5-kk|+t&ArPIxiY-bQu_JjG&cav!FBz-r&lJ^bR)}?V-FP-Ig{r};9`^lg)AOiIkg|U){dkNRy0h?! z!BHBR`?LGdgei4+v~y8EHKxi2ghB(FG{T}RuE<1!Lqk>N+ye8B{f2oOwm*f@VK`|bbI3u*&t>XemRgwE}jb0}fS^II;;Q6Oi-=Wro8Ypf}I;v)v~BaN@PASLy_jJ6|<7wCE%0$!s@ zu$jE}aC+^|Pv5lj(?8w$>8hQdF4_6%VOgiOkM*>*7EN#H`cfH!W;@o@tm}9sM8?+G zGU~9)sKZ(g%YD?90&p0P(iJnh9!a}guRX+Vt0-N+`GPH~;-!k+U1yUAnWm8l``^aV z(51UkzcIqNotIF#=D6!l_ElS17+K)d-jvT-!?R+4hoYw%W`_=mG5<9fWIR?w8}E$I zcU}YC!2gSScTJ&rwV9>psdtu^R$a5t^$?v*U$XM`$V6d3cuL1Q%9O4v|Feu|+0MYn zJhXOgAb(WGmFo{Z?*}e@mv=;EsPL!L>Vle?RqN1^HC=yVF#8X$G-#Xl4i)-TQGRV` zby1S1FT%vqJx{`U0b%B-Jo|pl3_03_=#?x?I;WnUv_D1Nf%h=f@@8g49&}lh&72>durAd8JexPYKAQe> z_d50z5wjbBmly0Iu)HYc;&sE)Dr2*9pUgT#*2cup;fWXTR>4-k!Y=fmbiE(mA9wD- zk%w4E-}vmyY6PWbdc}f+myImVVCac#ZoL|Xru9(FFUi% z`+sjV*0F12W}as*67ZDuJsPWd4Q?j1CF1OC0`_4#mpYhxFm1M*bIO^Skk7Um$!l2C zsc3PhJiF@#H3wM29Zm0gW?3)RSwdHz)NUw`lCku9Ef0oAM`Tm{gUh2UylU~LuJO_i zQblZ8EU#Ey+@(paxSsTKYkK3`P+#MvmBEQ8(>y)Y{!5yk#Hi%_7)KBaA1V+~m@zwc zYHLC7+8C&8!fT<9fvgebA=|&xqg#n0`eM%`R17b_vn*{N>8_Z5P31JZo{PvdnFYr5 z&c*@c(!*a>9FE_nq6&yCIe);=Q2SgqXI4>>&;wHk-1b_ioh^Oj5ww}A#BSR@NUtxJ ze04->x6lLSbTMshug})M*7|;I_%;zi(?*y%E&ZA=|A#KT8q4rr(Y4i{%GXD-N;l!0 ze4vP%pD)z=9#%*T5wlX`rY=*imEALc@Da^fGmb~sAGBJ^nX@$F(#hFSZpM`U(vKq8 zt3Nz|bnW{!+!xeiT>ZZim%6IHM-S5+yyN*_&q+*F=~_v%D%x+-Rr~*8-njExMIOR= zEY~+eNaEx`wOFOQ<_g-_E*uBzxl4<5AakvKw5_3l4rAeW*Qm79BfY zm(@;C`0QBseT0?YN4Vho2&aD^VbabCX7`!))4TQ{s_c9GH|=scEuGB1tnT8vW&iUw znx-U`@VrJX0DK3aV9|rO5Zcw78jJQ{L2unN_?pZQk0oZj%8F3`35ZVo1N(dAA=Xib z(XI)!qVlVo9pAft%uQ)jD{I?0P}yS5Q0fR~jO0Osqd8yHjSZ)}g@y0OWEn>;`U__g z>(b4+yg^9Aow?v2*;sNQ1DPAPV(IOwG`98C)B$-DQ7S81(wS}ob?@A{v?xjAsg8~V znMu~hQ2Q!n47H`K?tY7=|Du$T+e|chVzpimnvZ3&GDAH#`*5-<6?Yfw}B4*auY2rO)XhW*YyhAWNkb=cAPuO zJ#1L=FrtbS*A3ITy0a5>W>|eSo)}%=rWQBz2|LTU0=K5FKG7I&=zg|r#_ZBr6>hS% zsw$C8*0k1VM9Qg}IOVMtjSJ3bp6?W#m6+G;6f`%|&-ryVPC-NS7zH-)&(Tgn)BO34 zQ;=Gea_So5^An@aXim(RpDL?HIlunJLKfClCz?jFB>jts4NknZx{g80u79%RRANzT zRC9g2uF;uS-!v~dYFKhu(wUu#r&^N}-7$rQ?&Ns2J1cQ!Ya*GV>P%^BOeGpqBP+-{ z6WvVi-3HRhvc`q+`nqa&b~G}Q4PF~h*19!KEe-J$wT~}zj60(#8qah(Nqjnz(7OCp|1 z@D{R@iqB6viABwIE%8)cQ=`+^T3_#g*_=6z@zzvrQwzCTHCwQzzOE|el*bp>H<58G znws2Lyk&lZ?3YTkP|>bd*)3&vcJyCkzG2nc-Om~5xb9Hp@I!T_M<|5qlO#70%o#C| zSk;LX`CZar1JC2CG$x#3CygA|Fp?!kCk~rFaoB8fj8rW(Z(SAF%_*2iZc(QjwX(T& z-h#wpzm4^ww5~I%zAl+^rj=GW$IU67byDT*idkhdrkRd*Tx+6bu}ik29xK*N)-_fo zCKBXcUEGiQ~ZO!pVeoZ%>CpeocTmAdCS@@1k* zr81y1Rdq`@)#S!i*Y%@Lrb&{@i*$tX)uxa`9iwHjR4OB;Sp}$sKI@z^klKNoOSKub zhmJ?sYz&fj5Jax5xP)*7vPiAX>@taJO;oK*L=%vN>`4#<;o?3|d zkTLrtCr;gIaYIvU(s%}G&tbBX1_}yLlT^@>ikMT}y86VdQtC9bD=Md#k`tFW=5Wre zGQYR6)hSR7)E#Yl$6sge+PbDKXX4no_0_d`@RJ=js}%tE4JgWgjeHz0 zWH_EABdf_blbn@X*mO;oF3vT_Rdna!ov$yevA;wn1bTWfHBuHUEfIIn^NF5#RB~oi zu3xOwIIE>DMFlF^oKuGAvKbXKT{RZE`MRTyP?LlaYDO@^HJ(6`-#=)P=s3ck8w_`k zkHn}|-Tb3RxLN-X*IN4Z;dzS*7g@D2j-NT7U5ODcg=g;GWTqCHj?mbl3?=!>4d~LK zOwPm6jWbL%6&9ZBjw!%Ob)O84_0OAnX68jy8Id#DR>t*=0f%Gzb?1eNN5N0Cb|P=I zo6nu*dwFBrd}t&?57u+6&o}i`d8~SgNJDYsWKo(tO*At^TYe9Gp6MFv@1&mN++$CJy6+~6xXU$;Uk*bSOkf&)-^y9|pJG14>+bhj z6FUx;`mMl{)%2pEpn!x)dC4>D>r#o)mC011nc}LpqFPf_yZMx*tfI7X*31(o4I>lF zVad!HrF1MkLFCM8I!jNv4|ZiV;FdQLTNkN9mGEg$QL&ub+Ke3|RbZUNQx+8*{in?Jp5dMO8e@GqLir@Gmr zaFT@m5$;HD63;`#2$}Yq$}?K-dcIKr)KXlSLyeSJdbmGUC8RMK^pS*J`)-NR<6CD>s+V%F3x zQW+)RWZEPcH^xmYq*;(#)6&!+Ggh)!fmc|V^gUYmnaO%}qN=Gn;qoqn5x{~?{ngoO z_n6r;XV4hhQaELX1hs9;9Ci#z-1}BfFrE!vW zM0A}@F-EUaRZ(LY@J5B_b zlUV{oX};Zp^YMBaa+vnuL5RGBRsa%+cn(WkvJ%c~)V@K6r}h|t<(IE{nPs_%(l+4^ zC*=m}Nuf|Q(5BDgt717C@J5wVn%cHGp{CS)jA9~4=f+U0UnwM3?gnCyrt z!J@Z6o~Z3zzp?aK%S7S9yei{f%yKCWZEdON-HzH+s(Iq5QM}VoUrVY^oKRTksXff0 zv_{uS9$9jOzl zZB(f7jxepo+;f9Q9mAvkKCkh?*o55P1iJ$`)T#2Fc7j zW}_XF@r6{nZ&_Z;`x8g8gC6g=arxTBB(;6gl%y>V3U<^)(s)$9;R{o55AZy;g;sDp zH6{BMgbV!+Dg5%5Ccdh{(f-WVChj_>tZctHF8idb=dmPH&szQRWzj)$EOD6?wf0{r z-b2?lRKWh>sjeyxp`N=mZu=GZ6g8VWB{ zzi#5PYZxdupoYSy`k8u6lDd)GnZQy~muxnzujkOd14#aC0>63{{Cbj#e_W)Rog+S^c%%S0)dt%i9k0?aF-noPWQGy2?z~=Py27U2osv-}0oN zZKXSBqw?^Kc~*WuBC5yY59S~KZD)K7nttlhzvlh{U4S?8+pl1@zAen$Bh#_A^+y7k zx0;Y9?Z0PD%#8pjql2$%>lZF)L6EEC4LVoWS)bQ$4euYBBGj!1FLKdz7n^!s@g}8* zeke@etMn(n^-}au>Z)f1>+vpDO1I!g*PhOWq`tcZH&h*U?xUAvG(xi7|;kXo5+ zm73iB-bA@sMm^4=BoPDQNlOUos$Zcn^z}u zS)yE*%T1!2Gm}kxxoZWTRC(#o|9qcP&pi|VRyA!{x{(n{COeBbmgeR!&nd|*ys+Pl+@iK!rsX#G+0uJpZV^F|-2BP8 z?&RDdlXC}8&g~x=#CQ7FimY5Nm}GVKCc^SQ(Omb!z9qT&Z8^u~miL+8YhZ4ENv<0) zd5;}bO!QkMZyqVnd6)M-Hh0K{eImJTTi@xqYje)ZeIlnUcT-O9a{3V=;GBU-d+bDBN$%V}cadd^s0hopQwQ~#%x9){ zI}@Rs<&UItwn#ZY6TL5Gy*pX&<$X!mg*nr5ZzFBjy1if0w)fj@@}Lov-({O~lKh>$ zqug%Ca=Z1ufecrcJGdmbe~gNAis@4>{6EoewzHH+KC`^aRA+!aInB-xos zSIgkhLA|#HwZxF#xz`Mxk-Ku}dGsA2AyF!Bu5`2^emko^RMvyv9GhF*r}|B%#2H5wxNcOS}Or~U-=BHZX35yB9Ib3vTs`zPur@fqVJIQyKEBQ`fU zQ~EgcP>_|ly_s*4Dfd(bY$&q7D4*mEcnG1-l~ps z9QJ)oXRCvLPPx?6oLeIJ#TI^{!u615xct3L@Z%Ar-^7&aD{{>et=E=XaW6`h(zp|Cf^w3m!G?EBHFWn=Slt!B<-Nvx0B3@aF|D zlzyWQ>Ca1opJ?H)34WV}zp3yX2VVQDknO@Bl5shO{9Eus%MPC@Jja=)zB7Nm5&ql^ zq<-~M`E#5-Exez?$!{$^)w__Ke$EmL-$VGDEqsW`-(boAvG9wndgTee$ijaj_(}`c z_3!6=XyN08Kg4qBBTcy$K3VX&79JIRFqr}qztPqqJKSdR)p$$zW(z-A@pGKv>N_K8 zuHav0AoZ(8aJ!$@E4-gmWa-0GeAb7b%E6?^ZR&Rxe!lQGTX?&aJ4StHBwZr-cNs|i zS|K>UWC_#Ng7>xX>jW>e@S6o6VBxn3KHI|Y5}e=6is^pAPqT3Kd=^FLJuQ5#@M|r6 zqu~2m_%nhhE&MsbwO?m6+AR2a7XMYjwZCWhTLnMF;=iMg`#JrsA?ZWGi!J;!k;BVe zOy3B8r-k!dD0tTWl!f3BrsVwux8t)u&T&Rt{6p0-)t3i) zNFzi}nZ*wae!PVj3EpDiM+yEL3olW}{hXCny^az7+m?Ow{4vMbVc}Yj9H-Ng&+k8H zJO9qY=c!}rzgB%~1$XFyNlcA`7hC+4;F~P`Y{74{@Fhl$CI3Q&=QzJt-4@Eg@}Kc{$5MmGQYwcvAUFAvk5f?sUm_X}QR;SURbkA<%ne6UsS zlY(!t_l6`tdKVCkPP_!kyFO7MZ|J5z^o zg1Z(zN$^80yhI(-JlWFoSmA4V8TqpWpJ2&3NpPJn!=EeoX%>IJ;AdKRqu|;vGICl4 z*X^Id&lUV^OHP~MI$wr=iNgCi+pPLtF8C9?R)oawHsyZzsQS*FxKZ$@Ed1AkpJL5h z?i5_-%gDK3@VhKI53A#T&JeYunc=H_1M=Hq3x87N{MnMTN$^)J{O^K)YT>U6{*8sd zDfoWY{P11D54P}+1wY!tzfw5G0Zad0ikIWeviSW4U#{|H>=0786&&dFK7#Xp4yFSI zcM+uDd4d;O_~C*VTXN|6ChTyMT_#DBvS@@~y znCxl!ZI$rfv-oES-rMreGX>wv!u9$g$2rWxFA)AL3%^kCH`RBhUY+WAfHOA(sb5zL z-fZE&6nu$=->mQ)=UU4jek=G9mOl3geu9NRsBnt^mfh693PO{Fd#rLF6Mod<^Lr9F zKBUxlCe!nRKV{)B3x2(Y|4SYBb6iWlZtonY&EkI`a!#=D&qU5jtABkf_!Ac1SJ@@U zX|UuBQuqL8ZKg`<*B*jzvhaNsPK%&W_6b+ySE=vJIqgq5&H@WB5WarhScX4V@N+Hx zk%Dit)?ZTuf7Zf}Q8>-R)kC`(`Ns*q&C>rw!TBxRm?}m7gX%kTrbhU+mYfE`ud(oy z$XRB|IY;noE&QkIxSx}6$w>?UNsGTi_{Em~KNq~&!fy~c2U&KzRq!J${0@;5-92Li z{&k=5=UDvJ!ryEzKuETAf;(2bJRx!(vgG_l_=~J^UljZ{3;(C!tM#IUTo=qmcnzKKI%Io|9s)Eu=+)Z;HxZrxyaewl5>UdYb`ym6@0T*-R+_+0_`BLVnh0r+zP_|^dYQ^MJv10PxjnD06!!EFCv`f&!uuWscXmdJtKfWCjhSw!0SZ*3R!xn>&hhmya4`J z#OtYE?IOqQ1DI>h*9pE!_6PJnxZ^w+Ab&#u{?`C}v&b)$d7xfTI?e|H{5}Et?-76> z7J!cpz@q{92?2P00G}zf@ zxWsLBy`1!UH$cv30r(D)Ggrntb`D7#J^9;ygtIcvTgQb?L2OEx|9Jd|UUCwfGM@j8<3C0G$5UrKMN)K6 zu{?S=3Y{FQ{wlVoGI~1G1jfT!yb=&r0>Ub9Smh0?Tw#?ftoWl9XSCudz*7PgTNM=6 ze^n8qwZ@7uT2V%;v!j*R(Ms%S%~Z0+Xjw}57?pR7DsHUGJ4XE-r_PSkzm>FcO4>Lj zZLC7ZsJ~+sK1Tf=tIm$m997~N^>?f;SN$EQN*}BKj#H(NRe#569aOnv)$egC?>Lof zyyA~n%<<~%c*PvA${Mej;}x?=F^d$lNHL2Pvq;sYNa;CV{T{FMAFq%i^}9$(D^hYM z=)6ku1SM^Pk~~34o1i32Q2Yss?-i;OUZKk26{_rBq2hUkN`P0WO7RL+Hm^{XJV9X- zbU6y4=O2_W6>7QScAh>b-lo0K6R#6T)K21gI-mAAFRY8!Ugv4I^R(Z2+KW8xf1Y+g zFRUw|9nlkC7H8J3=8e`0YA^M4OL*GFywSRJZDLP*qNiQa)4u3w2lTY>dD{8BG1`3E z{XFeko^~rwdz7c0$s40f(7nUct?21y^t3;C+95pc5uSDlPkVr;o7x+ztEpYk)Bf&h zhxf+mcG52IX`lDBJ9^p^J?*ZZ_A^gAnx{R@)1A=Mp6h9+^|aS|+5tV?BRt)aJl!We z-F-aW4?W$nJl#_~-AO#%Gw5+ur`_1oUK`dH3~PIawUNWx zal_)O+NVA3ke>Lqc6U$vsy9KoBE1Yrhc;!buy*ROcFeH$$gp$tbH)7eK4&3EUf({tPL5~E)~{2 zGOYVxSofo_?p$H*k{uJ;OpoR z){Pq0jT+XC8rB{e);z2GQSYL{K z!qo$m{QfOgp+^1a;rU1Qjzr@^(_q<;IMQ^H-}odR#}Do~H7yBW6ZO^&QA@pBfnFR% zO}0q*+*jnMdMZwSYj19CtgmZiXKAUbRW796Pk9heQZ+eJRh4L_j>IR)mj3M#e7TvX zxDLHZTBSqjHz&qQ0J`_Whq-_vaLUl<_A++W80eSxp<=j-n0H-MbI z=(mx7E9kQy$hiaf=qGCc-y7sS26FZXIr{#&?)tn1a!{Z5K+XXm=M&(gKKgz&Eg$vS zoee{Yzv#uSetq{5-1djz!2dDu3j_H2{xDrG>OULg@D_%#^N9g+769J`zPW$R)>Ge) z)xF#+K+eG+=h}dBZvlKCvaQi`E#N-_{Be*!6y%%xm~1^?0Xck6u#x{J;C!#8!Oi_d zeEJZO{~7SH-G|F{buJh6H1}n5wmgtC5%?%a-&dsViE_;SK`dt&$kF!|X}{u_!#>LC zRFJzfa9%zmuh?tcY22Y?;kfO3a}oOgha_4*QUlrxA6q{Q|534M%x%>DAVKKlL`%|9IY zMIy)MPX_!z(Ek*{xm=uYnEMeJ9|7|9{UzPoYX!)``Nq$oT(raOfa82)HOLtW<*oy~ z0Pv?l4$6N4_&DF-f9HY|e<5Grx1n*IZ{)~zIkv+n`j~dvRd8F*KEN*o{(%Af@qlBz zJqqM_Ag2`gsQ*mBG49O;Ibo1f4}6rf1o)$Ye^CIR|9KBiYzK^o`hEqCV|=(5lLD8KSOV>V7l~QAj!FVzn zaI9|`;8<=slzS+Ydou9R4%L98oCP2U<6#TnsQFITJz7K)N2u$!_-p1!w(_ppTJ5|FEk{Hh(toj|Be70sIBP=NI`K`AOiTJ^8vX zC)VdE`WSvE;70>~Re+oufnN;#y8({?&ewxEaeYyrb-Olq0{(S?oE*AN$%)IIN*`11-hfX7{6N9&dhvB-PAn%%A0uZx;AMax9U!L+ z_{RYMB*2daJRTs&JjcNL#DL!da;5{m1ms}7#rzmMQHe+uwt1OJ!+{v5#h zSuvvz{aXksv7QwmX94iho_xKT6Z7ZL$H-Y6!0!M)Kg(1me`5fj zuS0WU{)zN4{5u2qd>xt-^LcO0@Ye+J9|Qi$z<(xy|2*LNVCR=X&M6>gEAY|Ip923> z;C~aq&z1XMxL&6Le^0?}|Je`trvv}s0DeC3(Vs^J@W%na668+`;GY8gxxk+nz^?-w za>NtAW2Ifd4V@6To+P6Pc3jKLZ43`_$0K*kPXlz6&_E z*NGr!KFFC1e5}`e;MW4b3HYPHZf$_`GuuYbD**QZzZ2xwf&6=ckMcJFj`CjsIcI>J zmw}IR-UmDk`s~Y_^_1Ao3+Q9?&l8;61^HpXM}wTnfR6!u2H;}>PXUf{E(9FqJOwz$ zz1IY1{p&&hw}6lByB9D1DRI59+(QA!a*F^*{f`5D9MsD^XTbV2(8t)b0r;p-JK!ki z7l5OlcLR=kt^*wP+ywY|(DUztv!0Eh=T_jOp6>&W^3Ba{Y){nxM|?4c63cI*kFmp0 z!R`J&8u-n?pBTVD1^8zIe_jAT3H%n|pB=zo2K*%Oe-^<174TEQ|6Kt8Vc@p{e|-S| zdEhSu{>uUUNxKt?65IbQ`WX9{1HK6Ggy43&v;xlWsxWdc27ChG*8x5e@ZSSo0QjST z9|8E&g0udMLC@!akN(+*FEUYL{f`7Wy9v&6_}wu^{~rM#N67LoC9*k03YR) z0{>j##{&2jfMdCHLC$#~rvdm_?qcAd5B&B3{-uE9xOqRwxd7xm3-}ViUk7|C;9Y?K z6!6ahZv*^0!EHax;ft)4xEFa>=yHAXryFkuzkpCs{i-A9Y zFLG1j_UfdMkuwaCQO1pCGv1zNY|=etRv*xeVmo1bpl-_X3V~cm(8NeK!EU z0_6V%@XG=J8^}j{z706q?Q@WW_W2I*pMm@k-vmI(w$G0M$9;)>!MR<~f5rfg{qYEp zgLaz?{C1LM+N&&pUk-fik0%81PY3=LAU^>(_S5E@4CP{fd>8oGzH|6y5lXh7!~sV? zsTJJz!zSRPpDYaEp9g&OllB1qGT@`1{0wmPlV1eLSqXgflivW2esWiUoIe2nYOZ>` zZv_4$z~_6YjD0o$ej2*q?D+=ZdjY-!@Vx=we_s+z ziRB|cRB*QE9Qqi0762dh84LV&;2#;lp91{f0soi){u#g@5Bw(J<8{xafaCSeD*#9S zt$-u{LBNr}MsT*zIMC-w;A8)N3HY}Ie+%%@o*w}J4&Z+h!2b^TcLG0WKRTdf`%g%4 z*8eX0nD*T#fbRnTZr~plz#k3#dw^dQz@G{H-vj@|0RB9{@ji{SLC(D(XDRT}&Q|~* z=g-#yo;4p1kaI8KINx{#2KhK|c^hz?w|owAvgX5pXU&KACu32v z{baP@>?askPXPR8I%oW+9&n7Sivhm{_!k0>arFwoF|Pg!@cTf{eSqH&_y)lL0Qf6_ z{0)7nOw*<(!ANa=t z|B(Rx2H?kl|197S0R9%>4+8!k$jA8eCGb}Pf53rsK#BbX`FjG6_lX?{INmpvCpi1z zL-a9zcsTG;elg%j!8{=ba&R4VI^Y-|&IJ5sDEEB8F+MB<{1)I}131Qq+X2V;@G#)3 zLC#Zxvpw;?ufGESVc@?4e6-J-fTNw?1vyJW&R2l90lov|p!|M6CK4rXuXg&F_S#Kw z+aLApG#c@cN>>ufTP_`0vzpD4>;QGT)|m?oS&zG zk8x%N@SmbQM*pjTkNY{-0sm>>|2lyG81SC~{!_q5eO?Ftv%r5pfWHH9+}GOwV9HF1 z?QlJPOubye`x1urnh5+q13vbf~aJ+8&Q^2u(F9RIg_YT0Zeb)%i^;!vf zJ`H@-^98_5dS&eJCCK6X(v5w-1AZysKORbjQQ~s{LLb8)COF#@%N+&yRFE?csr2ug3FGmQ@<>I53fWHm+=(isP@IM3o-$0*l0Y|^>n@1!{cDoM}oZIUK z`k4Ce0XX{Yz5#Mv;J*lR4g(zhwje;xSm2}I9vQ%&0yz3@IpFBGRe+=4o(nkM=X06h zY@feFy?z0Fy#MeIfa85@n*qoBUOoi*n?e5Pz{mcw=P)8s>Pw$#5a%ZX9tC`=;H>{k z^fB!_9r!4JKHxaco&$1l|NN(b<39gIAP4u~9sqt3=<_h}@p+%efd4Y^p8-DV|2*(t z0sbq%=V$zl9r_(gBuZ@0V*uYB@M8hr7jPVBJ;B+||DcbNUj%&A^Jw7z6Zj>-$NAF9 zz<(9^ap0r;THwD1{H6f@Lf~%!{`tVicDxe!{{sHaz(;-V0{-j3zb}CQ81UZ!{xbpm z{)Z8X65D?(eT@D07M$A`^%)NQH-R4x;7Y zJm0DlSa(SI%q;9m-SoabBx_=TY7bpdjI1^f?y z|2x1h0{r&@a#jKVL*PFRIJV1kfa5y%r2zR`0LS?79^g2iafXu;l-O@^J~LQw_S=8c z$N24mz{j{T8u+;HcQoMW4^so=Ob0&tLq!1p6yT#j%nRVx0e>CTs~K?ghqD6YoDcl< zAg2Rx^oQjEa;^aW29R?t;1>gaQ-GY?fS(5b-2wau07pOB066-|i-4n_ydgOI$)iy2 zXTZmK&bPq-2>5+}LI;%C57Dm%3C{9yKVgpm{=UHfnDQ9Ebp!Zg0FS}Ac?8HoJtqSn z^(+HE>RBGZKLPlkfS#uZ@D~Ap67Vko{3yWNK@QHlegXWWfxi;)V!&?=kh2>25#X-_ zd@|r01LV8{{3*bH9q~!e-q$1j{g&I9LGNd9LMo*1!q6}2Fe{Uk`5>_{w;lsf9@f;?a%uHAN_e4 z;NO9q!T>pw0G|%y@*I$}1LT|reDuRJf!~Mtr;;pA?ZBS_@~;NI1NaTVNBMUHe=Er~ z_E{CcUk`kxkJ83*o&!GWvlaNgK%aMkkNSKEI6i;6Pk}Co+fkLvKPVj{IJct<@`qde zlQ|QmV!(R?zYOG{KIOnie>fHJJ|L$mK+YM!M>z`t|A_Q6_CF^;&QF1l@jM;CUjh8S zpywUH$LrLIJ(Zcd#rdT}d&UQ7SoN^Q)&mlN~(-L0lwE?21L<8#m}1!w+~^fCO~1ZVlkzfW-H zKS3YE=X<(1+5D$8tn^_W44B$Imp5O zb#(xKJ>cjMw?Mh*Z?^*q>VM~3%Rzhgm+_giVSfw> zZrju4!YMIdic-h*>Td=&|K6F2!-jAEow9c=zWMjXhEQEN8NT`V!bVuQ`S-%kwQ%$A zd~LOGXLl{v{QGD|{z@4zE2J_$F5|KOcjz1Z6jaAkai?HjGU*hwH1Pq`y#o3dWAKpvbrC-g5#lYW)@Gkk zl}zzJ@=?{)(2!_MIR%YPsYJoF8FNOef5btK=Qp+%G`GgYU9(}RQu!WoakMELw!jx~mi|KSv`JWi4 z^X<1!c79WTlfOdp+xGu3rt_J9@5@NB?LU)F^ko0RFX|kNL@?W*t76JG_Mb->>muEY ze(5xrgD|Bn>Tl+cDc^iI(<#nhn4zd&AC_xCmYx1tQ*ZOVn9i8rK8b!Dz(Ku-WOI29 z&GnLQ?&okNzw0CVhpE4TZ=xS8)6QQk`ERrQ$IgEpw5C$|4?^fCF3 z{d+2#`P (must come first) + location ~ "^/([a-f0-9]{64}).*$" { + # Only handle DELETE method for this pattern + if ($request_method != DELETE) { + # Let other patterns handle non-DELETE requests for this path + return 404; + } + + # Pass to FastCGI application for processing + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + } + # Old working regex pattern - testing rollback location ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" { limit_except HEAD GET { diff --git a/config/systemd/ginxsom.service b/config/systemd/ginxsom.service deleted file mode 100644 index 8b5b991..0000000 --- a/config/systemd/ginxsom.service +++ /dev/null @@ -1,47 +0,0 @@ -[Unit] -Description=Ginxsom Blossom Server FastCGI Application -After=network.target -Wants=network-online.target -After=network-online.target - -[Service] -Type=notify -User=ginxsom -Group=ginxsom -WorkingDirectory=/var/lib/ginxsom -ExecStart=/usr/local/bin/ginxsom --fastcgi --socket /run/ginxsom/ginxsom.sock -ExecReload=/bin/kill -HUP $MAINPID -KillMode=process -Restart=on-failure -RestartSec=5s - -# Security settings -NoNewPrivileges=true -ProtectSystem=strict -ProtectHome=true -ReadWritePaths=/var/lib/ginxsom /run/ginxsom /var/log/ginxsom -PrivateTmp=true -PrivateDevices=true -ProtectHostname=true -ProtectClock=true -ProtectKernelTunables=true -ProtectKernelModules=true -ProtectKernelLogs=true -ProtectControlGroups=true -RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 -RestrictRealtime=true -RestrictSUIDSGID=true -LockPersonality=true -MemoryDenyWriteExecute=true - -# Resource limits -LimitNOFILE=65536 -LimitNPROC=4096 - -# Environment -Environment=GINXSOM_CONFIG=/etc/ginxsom/config.toml -Environment=GINXSOM_DATA_DIR=/var/lib/ginxsom -Environment=GINXSOM_LOG_LEVEL=info - -[Install] -WantedBy=multi-user.target diff --git a/db/ginxsom.db b/db/ginxsom.db index 4683bf3042d7eb5e7895adbfe063c6762fe5c877..97c7a5e115fa265cc716af107e4de1c3dce06b34 100644 GIT binary patch literal 122880 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 literal 36864 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 aS`^`dN7bST3p}J2ML1x3>(QaKLGHh2Eesj} diff --git a/db/ginxsom.db.backup.1755624647 b/db/ginxsom.db.backup.1755624647 new file mode 100644 index 0000000000000000000000000000000000000000..4683bf3042d7eb5e7895adbfe063c6762fe5c877 GIT binary patch literal 36864 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 aS`^`dN7bST3p}J2ML1x3>(QaKLGHh2Eesj} literal 0 HcmV?d00001 diff --git a/db/schema.sql b/db/schema.sql index 51acb33..216264b 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -65,3 +65,173 @@ SELECT FROM blobs WHERE uploaded_at > (strftime('%s', 'now') - 86400) ORDER BY uploaded_at DESC; + +-- ============================================================================ +-- AUTHENTICATION RULES SYSTEM +-- ============================================================================ + +-- Authentication rules table for flexible access control +CREATE TABLE IF NOT EXISTS auth_rules ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + rule_type TEXT NOT NULL, -- 'whitelist', 'blacklist', 'hash_blacklist', 'rate_limit', etc. + rule_target TEXT NOT NULL, -- pubkey, hash, IP, MIME type, etc. + rule_value TEXT, -- JSON for complex rules (optional) + operation TEXT NOT NULL DEFAULT '*', -- 'upload', 'delete', 'list', '*' (all operations) + enabled INTEGER NOT NULL DEFAULT 1, -- 0 = disabled, 1 = enabled + priority INTEGER NOT NULL DEFAULT 100, -- Lower numbers = higher priority (for conflict resolution) + expires_at INTEGER, -- Optional expiration timestamp + created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), + updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), + created_by TEXT, -- Admin pubkey who created this rule (optional) + description TEXT, -- Human-readable rule description + CHECK (enabled IN (0, 1)), -- Boolean constraint + CHECK (priority >= 0), -- Priority must be non-negative + CHECK (expires_at IS NULL OR expires_at > created_at) -- Expiration must be in future +); + +-- Rule evaluation cache for performance optimization +CREATE TABLE IF NOT EXISTS auth_cache ( + cache_key TEXT PRIMARY KEY, -- SHA-256 hash of request parameters + allowed INTEGER NOT NULL, -- 0 = denied, 1 = allowed + rule_id INTEGER, -- Which rule made the decision (optional) + rule_reason TEXT, -- Human-readable reason for decision + expires_at INTEGER NOT NULL, -- Cache entry expiration + created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), + CHECK (allowed IN (0, 1)), -- Boolean constraint + FOREIGN KEY (rule_id) REFERENCES auth_rules(id) ON DELETE SET NULL +); + +-- Indexes for authentication system performance +CREATE INDEX IF NOT EXISTS idx_auth_rules_type_target ON auth_rules(rule_type, rule_target); +CREATE INDEX IF NOT EXISTS idx_auth_rules_operation ON auth_rules(operation); +CREATE INDEX IF NOT EXISTS idx_auth_rules_enabled ON auth_rules(enabled); +CREATE INDEX IF NOT EXISTS idx_auth_rules_priority ON auth_rules(priority); +CREATE INDEX IF NOT EXISTS idx_auth_rules_expires ON auth_rules(expires_at); +CREATE INDEX IF NOT EXISTS idx_auth_cache_expires ON auth_cache(expires_at); + +-- ============================================================================ +-- ADMINISTRATIVE SYSTEM +-- ============================================================================ + +-- Administrators table for nostr-based server administration +CREATE TABLE IF NOT EXISTS administrators ( + pubkey TEXT PRIMARY KEY NOT NULL, -- Nostr public key (64 hex chars) + permissions TEXT NOT NULL DEFAULT '[]', -- JSON array of permissions + added_by TEXT, -- Pubkey of admin who added this admin + added_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), + expires_at INTEGER, -- Optional expiration timestamp + enabled INTEGER NOT NULL DEFAULT 1, -- 0 = disabled, 1 = enabled + description TEXT, -- Human-readable description + last_seen INTEGER, -- Last administrative action timestamp + CHECK (length(pubkey) = 64), -- Ensure valid pubkey length + CHECK (enabled IN (0, 1)), -- Boolean constraint + CHECK (expires_at IS NULL OR expires_at > added_at), -- Expiration must be in future + FOREIGN KEY (added_by) REFERENCES administrators(pubkey) ON DELETE SET NULL +); + +-- Administrative actions audit log +CREATE TABLE IF NOT EXISTS admin_log ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + admin_pubkey TEXT NOT NULL, -- Which admin performed the action + command TEXT NOT NULL, -- Administrative command executed + parameters TEXT, -- JSON command parameters + result TEXT, -- Success/failure result and details + timestamp INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), + event_id TEXT, -- Reference to nostr event (optional) + target_table TEXT, -- Which table was affected (optional) + target_id TEXT, -- Which record was affected (optional) + ip_address TEXT, -- Client IP address (optional) + user_agent TEXT, -- Client user agent (optional) + FOREIGN KEY (admin_pubkey) REFERENCES administrators(pubkey) ON DELETE CASCADE +); + +-- Server identity and administrative configuration +INSERT OR IGNORE INTO server_config (key, value, description) VALUES + ('server_pubkey', '', 'Server nostr public key (generated on first run)'), + ('server_privkey_file', 'keys/server.key', 'Path to encrypted server private key file'), + ('admin_relays', '[]', 'JSON array of relay URLs for administrative events'), + ('admin_event_processing', 'true', 'Enable nostr-based administrative event processing'), + ('require_admin_auth', 'true', 'Require admin authorization for sensitive operations'), + ('auth_rules_enabled', 'true', 'Enable flexible authentication rules system'), + ('auth_cache_ttl', '300', 'Authentication cache TTL in seconds (5 minutes)'), + ('admin_session_timeout', '3600', 'Administrative session timeout in seconds (1 hour)'), + ('max_admin_log_entries', '10000', 'Maximum administrative log entries to retain'); + +-- Indexes for administrative system performance +CREATE INDEX IF NOT EXISTS idx_administrators_enabled ON administrators(enabled); +CREATE INDEX IF NOT EXISTS idx_administrators_expires ON administrators(expires_at); +CREATE INDEX IF NOT EXISTS idx_admin_log_timestamp ON admin_log(timestamp); +CREATE INDEX IF NOT EXISTS idx_admin_log_admin_pubkey ON admin_log(admin_pubkey); +CREATE INDEX IF NOT EXISTS idx_admin_log_command ON admin_log(command); + +-- ============================================================================ +-- VIEWS FOR ADMINISTRATIVE QUERIES +-- ============================================================================ + +-- View for active authentication rules +CREATE VIEW IF NOT EXISTS active_auth_rules AS +SELECT + id, + rule_type, + rule_target, + rule_value, + operation, + priority, + expires_at, + created_at, + created_by, + description, + CASE + WHEN expires_at IS NULL THEN 'never' + WHEN expires_at > strftime('%s', 'now') THEN 'active' + ELSE 'expired' + END as status +FROM auth_rules +WHERE enabled = 1 +ORDER BY priority ASC, created_at ASC; + +-- View for active administrators +CREATE VIEW IF NOT EXISTS active_administrators AS +SELECT + pubkey, + permissions, + added_by, + added_at, + expires_at, + description, + last_seen, + CASE + WHEN expires_at IS NULL THEN 'never' + WHEN expires_at > strftime('%s', 'now') THEN 'active' + ELSE 'expired' + END as status, + datetime(added_at, 'unixepoch') as added_datetime, + datetime(last_seen, 'unixepoch') as last_seen_datetime +FROM administrators +WHERE enabled = 1; + +-- View for recent administrative actions (last 7 days) +CREATE VIEW IF NOT EXISTS recent_admin_actions AS +SELECT + id, + admin_pubkey, + command, + parameters, + result, + timestamp, + event_id, + target_table, + target_id, + datetime(timestamp, 'unixepoch') as action_datetime +FROM admin_log +WHERE timestamp > (strftime('%s', 'now') - 604800) -- 7 days +ORDER BY timestamp DESC; + +-- View for authentication statistics +CREATE VIEW IF NOT EXISTS auth_stats AS +SELECT + (SELECT COUNT(*) FROM auth_rules WHERE enabled = 1) as active_rules, + (SELECT COUNT(*) FROM auth_rules WHERE enabled = 1 AND expires_at > strftime('%s', 'now')) as non_expired_rules, + (SELECT COUNT(*) FROM auth_cache WHERE expires_at > strftime('%s', 'now')) as cached_decisions, + (SELECT COUNT(*) FROM administrators WHERE enabled = 1) as active_admins, + (SELECT COUNT(*) FROM admin_log WHERE timestamp > (strftime('%s', 'now') - 86400)) as daily_admin_actions; diff --git a/file_put.sh b/file_put.sh new file mode 100755 index 0000000..8672a18 --- /dev/null +++ b/file_put.sh @@ -0,0 +1,250 @@ +#!/bin/bash + +# put_test.sh - Test script for Ginxsom Blossom server upload functionality +# This script simulates a user uploading a blob to ginxsom using proper Blossom authentication + +set -e # Exit on any error + +# Configuration +SERVER_URL="http://localhost:9001" +UPLOAD_ENDPOINT="${SERVER_URL}/upload" +TEST_FILE="test_blob_$(date +%s).txt" +CLEANUP_FILES=() + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Cleanup function +cleanup() { + echo -e "${YELLOW}Cleaning up temporary files...${NC}" + for file in "${CLEANUP_FILES[@]}"; do + if [[ -f "$file" ]]; then + rm -f "$file" + echo "Removed: $file" + fi + done +} + +# Set up cleanup on exit +trap cleanup EXIT + +# Helper functions +log_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +log_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +log_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +# Check prerequisites +check_prerequisites() { + log_info "Checking prerequisites..." + + # Check if nak is installed + if ! command -v nak &> /dev/null; then + log_error "nak command not found. Please install nak first." + log_info "Install with: go install github.com/fiatjaf/nak@latest" + exit 1 + fi + log_success "nak is installed" + + # Check if curl is available + if ! command -v curl &> /dev/null; then + log_error "curl command not found. Please install curl." + exit 1 + fi + log_success "curl is available" + + # Check if sha256sum is available + if ! command -v sha256sum &> /dev/null; then + log_error "sha256sum command not found." + exit 1 + fi + log_success "sha256sum is available" + + # Check if base64 is available + if ! command -v base64 &> /dev/null; then + log_error "base64 command not found." + exit 1 + fi + log_success "base64 is available" +} + +# Check if server is running +check_server() { + log_info "Checking if server is running..." + + if curl -s -f "${SERVER_URL}/health" > /dev/null 2>&1; then + log_success "Server is running at ${SERVER_URL}" + else + log_error "Server is not responding at ${SERVER_URL}" + log_info "Please start the server with: ./scripts/start-fcgi.sh && nginx -p . -c config/local-nginx.conf" + exit 1 + fi +} + +# Create test file +create_test_file() { + log_info "Creating test file: ${TEST_FILE}" + + # Create test content with timestamp and random data + cat > "${TEST_FILE}" << EOF +Test blob content for Ginxsom Blossom server +Timestamp: $(date -Iseconds) +Random data: $(openssl rand -hex 32) +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. +EOF + + CLEANUP_FILES+=("${TEST_FILE}") + log_success "Created test file with $(wc -c < "${TEST_FILE}") bytes" +} + +# Calculate file hash +calculate_hash() { + log_info "Calculating SHA-256 hash..." + + HASH=$(sha256sum "${TEST_FILE}" | cut -d' ' -f1) + log_success "File hash: ${HASH}" +} + +# Generate nostr event +generate_nostr_event() { + log_info "Generating kind 24242 nostr event with nak..." + + # Calculate expiration time (1 hour from now) + EXPIRATION=$(date -d '+1 hour' +%s) + + # Generate the event using nak + EVENT_JSON=$(nak event -k 24242 -c "" \ + -t "t=upload" \ + -t "x=${HASH}" \ + -t "expiration=${EXPIRATION}") + + if [[ -z "$EVENT_JSON" ]]; then + log_error "Failed to generate nostr event" + exit 1 + fi + + log_success "Generated nostr event" + echo "Event JSON: $EVENT_JSON" +} + +# Create authorization header +create_auth_header() { + log_info "Creating authorization header..." + + # Base64 encode the event (without newlines) + AUTH_B64=$(echo -n "$EVENT_JSON" | base64 -w 0) + AUTH_HEADER="Nostr ${AUTH_B64}" + + log_success "Created authorization header" + echo "Auth header length: ${#AUTH_HEADER} characters" +} + +# Perform upload +perform_upload() { + log_info "Performing upload to ${UPLOAD_ENDPOINT}..." + + # Create temporary file for response + RESPONSE_FILE=$(mktemp) + CLEANUP_FILES+=("${RESPONSE_FILE}") + + # Perform the upload with verbose output + HTTP_STATUS=$(curl -s -w "%{http_code}" \ + -X PUT \ + -H "Authorization: ${AUTH_HEADER}" \ + -H "Content-Type: text/plain" \ + -H "Content-Disposition: attachment; filename=\"${TEST_FILE}\"" \ + --data-binary "@${TEST_FILE}" \ + "${UPLOAD_ENDPOINT}" \ + -o "${RESPONSE_FILE}") + + echo "HTTP Status: ${HTTP_STATUS}" + echo "Response body:" + cat "${RESPONSE_FILE}" + echo + + # Check response + case "${HTTP_STATUS}" in + 200) + log_success "Upload successful!" + ;; + 201) + log_success "Upload successful (created)!" + ;; + 400) + log_error "Bad request - check the event format" + ;; + 401) + log_error "Unauthorized - authentication failed" + ;; + 405) + log_error "Method not allowed - check nginx configuration" + ;; + 413) + log_error "Payload too large" + ;; + 501) + log_warning "Upload endpoint not yet implemented (expected for now)" + ;; + *) + log_error "Upload failed with HTTP status: ${HTTP_STATUS}" + ;; + esac +} + +# Test file retrieval +test_retrieval() { + log_info "Testing file retrieval..." + + RETRIEVAL_URL="${SERVER_URL}/${HASH}" + + if curl -s -f "${RETRIEVAL_URL}" > /dev/null 2>&1; then + log_success "File can be retrieved at: ${RETRIEVAL_URL}" + else + log_warning "File not yet available for retrieval (expected if upload processing not implemented)" + fi +} + +# Main execution +main() { + echo "=== Ginxsom Blossom Upload Test ===" + echo "Timestamp: $(date -Iseconds)" + echo + + # check_prerequisites + # check_server + create_test_file + calculate_hash + generate_nostr_event + create_auth_header + perform_upload + # test_retrieval + + echo + log_info "Test completed!" + echo "Summary:" + echo " Test file: ${TEST_FILE}" + echo " File hash: ${HASH}" + echo " Server: ${SERVER_URL}" + echo " Upload endpoint: ${UPLOAD_ENDPOINT}" +} + +# Run main function +main "$@" diff --git a/logs/access.log b/logs/access.log index 290d9ba..b565fc3 100644 --- a/logs/access.log +++ b/logs/access.log @@ -149,3 +149,33 @@ 127.0.0.1 - - [19/Aug/2025:11:00:46 -0400] "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" 501 38 "-" "curl/8.15.0" 127.0.0.1 - - [19/Aug/2025:11:01:47 -0400] "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" 200 1984 "-" "curl/8.15.0" 127.0.0.1 - - [19/Aug/2025:11:02:33 -0400] "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" 200 1984 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:15:08 -0400] "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" 403 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:15:08 -0400] "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" 403 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:15:08 -0400] "DELETE /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef HTTP/1.1" 403 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:15:08 -0400] "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" 403 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:16:37 -0400] "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" 401 266 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:16:38 -0400] "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" 401 272 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:16:38 -0400] "DELETE /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef HTTP/1.1" 401 272 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:11:16:38 -0400] "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" 401 272 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:33:51 -0400] "PUT /upload HTTP/1.1" 401 269 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:33:51 -0400] "GET /ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:52:52 -0400] "PUT /upload HTTP/1.1" 401 269 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:52:52 -0400] "GET /878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:55:05 -0400] "PUT /upload HTTP/1.1" 401 269 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:55:05 -0400] "GET /739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:56:03 -0400] "PUT /upload HTTP/1.1" 401 269 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:56:03 -0400] "GET /cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:59:03 -0400] "PUT /upload HTTP/1.1" 401 269 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:13:59:03 -0400] "GET /0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:00:27 -0400] "PUT /upload HTTP/1.1" 401 269 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:00:27 -0400] "GET /813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:12:19 -0400] "PUT /upload HTTP/1.1" 401 242 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:12:19 -0400] "GET /95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:24:00 -0400] "PUT /upload HTTP/1.1" 502 166 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:24:00 -0400] "GET /2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:25:33 -0400] "PUT /upload HTTP/1.1" 502 166 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:25:33 -0400] "GET /044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:29:42 -0400] "PUT /upload HTTP/1.1" 502 166 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:32:12 -0400] "PUT /upload HTTP/1.1" 401 242 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:37:30 -0400] "PUT /upload HTTP/1.1" 401 242 "-" "curl/8.15.0" +127.0.0.1 - - [19/Aug/2025:14:47:34 -0400] "PUT /upload HTTP/1.1" 200 224 "-" "curl/8.15.0" diff --git a/logs/error.log b/logs/error.log index 5dae882..1939991 100644 --- a/logs/error.log +++ b/logs/error.log @@ -17507,3 +17507,8381 @@ X-XSS-Protection: 1; mode=block 2025/08/19 11:02:33 [debug] 390407#390407: timer delta: 3 2025/08/19 11:02:33 [debug] 390407#390407: worker cycle 2025/08/19 11:02:33 [debug] 390407#390407: epoll timer: -1 +2025/08/19 11:14:52 [notice] 390406#390406: signal 15 (SIGTERM) received from 396700, exiting +2025/08/19 11:14:52 [debug] 390406#390406: wake up, sigio 0 +2025/08/19 11:14:52 [debug] 390406#390406: child: 0 390407 e:0 t:0 d:0 r:1 j:0 +2025/08/19 11:14:52 [debug] 390406#390406: termination cycle: 50 +2025/08/19 11:14:52 [debug] 390406#390406: sigsuspend +2025/08/19 11:14:52 [debug] 390407#390407: epoll: fd:7 ev:0001 d:0000739927ED40F8 +2025/08/19 11:14:52 [debug] 390407#390407: channel handler +2025/08/19 11:14:52 [debug] 390407#390407: channel: 32 +2025/08/19 11:14:52 [debug] 390407#390407: channel command: 4 +2025/08/19 11:14:52 [debug] 390407#390407: channel: -2 +2025/08/19 11:14:52 [debug] 390407#390407: timer delta: 739002 +2025/08/19 11:14:52 [notice] 390407#390407: exiting +2025/08/19 11:14:52 [debug] 390407#390407: flush files +2025/08/19 11:14:52 [debug] 390407#390407: run cleanup: 0000606FBB9DF7E0 +2025/08/19 11:14:52 [debug] 390407#390407: run cleanup: 0000606FBB9D5360 +2025/08/19 11:14:52 [debug] 390407#390407: cleanup resolver +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9E3B80 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9D6980 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9B9900 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9B87F0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9B27C0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9B1700 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9B0640 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9AF580 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9A7160 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB99E130, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9A8330, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9B37D0, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9BA910, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9BE920, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9C2930, unused: 1 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9C6940, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9CA950, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9CE960, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9D2970, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9D7B50, unused: 0 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9DBB60, unused: 872 +2025/08/19 11:14:52 [debug] 390407#390407: free: 0000606FBB9DFB70, unused: 13576 +2025/08/19 11:14:52 [notice] 390407#390407: exit +2025/08/19 11:14:52 [notice] 390406#390406: signal 17 (SIGCHLD) received from 390407 +2025/08/19 11:14:52 [notice] 390406#390406: worker process 390407 exited with code 0 +2025/08/19 11:14:52 [debug] 390406#390406: shmtx forced unlock +2025/08/19 11:14:52 [debug] 390406#390406: wake up, sigio 3 +2025/08/19 11:14:52 [debug] 390406#390406: reap children +2025/08/19 11:14:52 [debug] 390406#390406: child: 0 390407 e:1 t:1 d:0 r:1 j:0 +2025/08/19 11:14:52 [notice] 390406#390406: exit +2025/08/19 11:14:52 [debug] 390406#390406: close listening 0.0.0.0:9001 #5 +2025/08/19 11:14:52 [debug] 390406#390406: run cleanup: 0000606FBB9D5360 +2025/08/19 11:14:52 [debug] 390406#390406: cleanup resolver +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9E3B80 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9D6980 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9B9900 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9B87F0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9B27C0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9B1700 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9B0640 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9AF580 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9A7160 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB99E130, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9A8330, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9B37D0, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9BA910, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9BE920, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9C2930, unused: 1 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9C6940, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9CA950, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9CE960, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9D2970, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9D7B50, unused: 0 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9DBB60, unused: 903 +2025/08/19 11:14:52 [debug] 390406#390406: free: 0000606FBB9DFB70, unused: 13576 +2025/08/19 11:14:52 [debug] 396701#396701: bind() 0.0.0.0:9001 #5 +2025/08/19 11:14:52 [notice] 396701#396701: using the "epoll" event method +2025/08/19 11:14:52 [debug] 396701#396701: counter: 0000731799AA2080, 1 +2025/08/19 11:14:52 [notice] 396701#396701: nginx/1.18.0 (Ubuntu) +2025/08/19 11:14:52 [notice] 396701#396701: OS: Linux 6.12.10-76061203-generic +2025/08/19 11:14:52 [notice] 396701#396701: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 11:14:52 [debug] 396702#396701: write: 6, 00007FFF6C9F3FE0, 7, 0 +2025/08/19 11:14:52 [debug] 396702#396702: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 11:14:52 [notice] 396702#396702: start worker processes +2025/08/19 11:14:52 [debug] 396702#396702: channel 6:7 +2025/08/19 11:14:52 [notice] 396702#396702: start worker process 396703 +2025/08/19 11:14:52 [debug] 396702#396702: sigsuspend +2025/08/19 11:14:52 [debug] 396703#396703: add cleanup: 000059E44D567A80 +2025/08/19 11:14:52 [debug] 396703#396703: malloc: 000059E44D51ABD0:8 +2025/08/19 11:14:52 [debug] 396703#396703: notify eventfd: 9 +2025/08/19 11:14:52 [debug] 396703#396703: testing the EPOLLRDHUP flag: success +2025/08/19 11:14:52 [debug] 396703#396703: malloc: 000059E44D52D570:6144 +2025/08/19 11:14:52 [debug] 396703#396703: malloc: 000073179989A010:237568 +2025/08/19 11:14:52 [debug] 396703#396703: malloc: 000059E44D56A690:98304 +2025/08/19 11:14:52 [debug] 396703#396703: malloc: 000059E44D5826A0:98304 +2025/08/19 11:14:52 [debug] 396703#396703: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 11:14:52 [debug] 396703#396703: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 11:14:52 [debug] 396703#396703: setproctitle: "nginx: worker process" +2025/08/19 11:14:52 [debug] 396703#396703: worker cycle +2025/08/19 11:14:52 [debug] 396703#396703: epoll timer: -1 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:5 ev:0001 d:000073179989A010 +2025/08/19 11:15:08 [debug] 396703#396703: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:15:08 [debug] 396703#396703: posix_memalign: 000059E44D519840:512 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *1 accept: 127.0.0.1:55920 fd:6 +2025/08/19 11:15:08 [debug] 396703#396703: *1 event timer add: 6: 60000:183301934 +2025/08/19 11:15:08 [debug] 396703#396703: *1 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 16611 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 60000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:0001 d:000073179989A1E0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http wait request handler +2025/08/19 11:15:08 [debug] 396703#396703: *1 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *1 recv: eof:0, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 recv: fd:6 145 of 1024 +2025/08/19 11:15:08 [debug] 396703#396703: *1 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 posix_memalign: 000059E44D538A10:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http process request line +2025/08/19 11:15:08 [debug] 396703#396703: *1 http request line: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http uri: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http args: "" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http exten: "" +2025/08/19 11:15:08 [debug] 396703#396703: *1 posix_memalign: 000059E44D52ED80:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http process request header line +2025/08/19 11:15:08 [debug] 396703#396703: *1 http header: "Host: localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http header: "Accept: */*" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http header done +2025/08/19 11:15:08 [debug] 396703#396703: *1 event timer del: 6: 183301934 +2025/08/19 11:15:08 [debug] 396703#396703: *1 generic phase: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 rewrite phase: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 test location: "/health" +2025/08/19 11:15:08 [debug] 396703#396703: *1 test location: "/debug/list" +2025/08/19 11:15:08 [debug] 396703#396703: *1 test location: "/" +2025/08/19 11:15:08 [debug] 396703#396703: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *1 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http cl:-1 max:104857600 +2025/08/19 11:15:08 [debug] 396703#396703: *1 rewrite phase: 3 +2025/08/19 11:15:08 [debug] 396703#396703: *1 post rewrite phase: 4 +2025/08/19 11:15:08 [debug] 396703#396703: *1 generic phase: 5 +2025/08/19 11:15:08 [debug] 396703#396703: *1 generic phase: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *1 generic phase: 7 +2025/08/19 11:15:08 [debug] 396703#396703: *1 access phase: 8 +2025/08/19 11:15:08 [debug] 396703#396703: *1 access: 0100007F 00000000 00000000 +2025/08/19 11:15:08 [error] 396703#396703: *1 access forbidden by rule, client: 127.0.0.1, server: localhost, request: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1", host: "localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http finalize request: 403, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http special response: 403, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http set discard body +2025/08/19 11:15:08 [debug] 396703#396703: *1 HTTP/1.1 403 Forbidden +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:15:08 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 11:15:08 [debug] 396703#396703: *1 write new buf t:1 f:0 000059E44D5398B8, pos 000059E44D5398B8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http write filter: l:0 f:0 s:164 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 000059E44D5399D0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 write old buf t:1 f:0 000059E44D5398B8, pos 000059E44D5398B8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 write new buf t:0 f:0 0000000000000000, pos 000059E437962600, size: 100 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 write new buf t:0 f:0 0000000000000000, pos 000059E437962C80, size: 62 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http write filter: l:1 f:0 s:326 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http write filter limit 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 writev: 326 of 326 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http write filter 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *1 http finalize request: 0, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 set http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *1 http close request +2025/08/19 11:15:08 [debug] 396703#396703: *1 http log handler +2025/08/19 11:15:08 [debug] 396703#396703: *1 free: 000059E44D538A10, unused: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 free: 000059E44D52ED80, unused: 2701 +2025/08/19 11:15:08 [debug] 396703#396703: *1 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 hc free: 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *1 hc busy: 0000000000000000 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 tcp_nodelay +2025/08/19 11:15:08 [debug] 396703#396703: *1 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 event timer add: 6: 65000:183306934 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 0 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 65000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:2001 d:000073179989A1E0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *1 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *1 recv: eof:1, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *1 recv: fd:6 0 of 1024 +2025/08/19 11:15:08 [info] 396703#396703: *1 client 127.0.0.1 closed keepalive connection +2025/08/19 11:15:08 [debug] 396703#396703: *1 close http connection: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *1 event timer del: 6: 183306934 +2025/08/19 11:15:08 [debug] 396703#396703: *1 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *1 free: 000059E44D519840, unused: 136 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 0 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: -1 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:5 ev:0001 d:000073179989A010 +2025/08/19 11:15:08 [debug] 396703#396703: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:15:08 [debug] 396703#396703: posix_memalign: 000059E44D519840:512 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *2 accept: 127.0.0.1:55932 fd:6 +2025/08/19 11:15:08 [debug] 396703#396703: *2 event timer add: 6: 60000:183301945 +2025/08/19 11:15:08 [debug] 396703#396703: *2 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 11 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 60000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:0001 d:000073179989A1E1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http wait request handler +2025/08/19 11:15:08 [debug] 396703#396703: *2 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *2 recv: eof:0, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 recv: fd:6 196 of 1024 +2025/08/19 11:15:08 [debug] 396703#396703: *2 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 posix_memalign: 000059E44D538A10:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http process request line +2025/08/19 11:15:08 [debug] 396703#396703: *2 http request line: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http uri: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http args: "" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http exten: "" +2025/08/19 11:15:08 [debug] 396703#396703: *2 posix_memalign: 000059E44D52ED80:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http process request header line +2025/08/19 11:15:08 [debug] 396703#396703: *2 http header: "Host: localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http header: "Accept: */*" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http header: "Authorization: Nostr eyJpbnZhbGlkIjogImV2ZW50In0K" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http header done +2025/08/19 11:15:08 [debug] 396703#396703: *2 event timer del: 6: 183301945 +2025/08/19 11:15:08 [debug] 396703#396703: *2 generic phase: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 rewrite phase: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 test location: "/health" +2025/08/19 11:15:08 [debug] 396703#396703: *2 test location: "/debug/list" +2025/08/19 11:15:08 [debug] 396703#396703: *2 test location: "/" +2025/08/19 11:15:08 [debug] 396703#396703: *2 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *2 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http cl:-1 max:104857600 +2025/08/19 11:15:08 [debug] 396703#396703: *2 rewrite phase: 3 +2025/08/19 11:15:08 [debug] 396703#396703: *2 post rewrite phase: 4 +2025/08/19 11:15:08 [debug] 396703#396703: *2 generic phase: 5 +2025/08/19 11:15:08 [debug] 396703#396703: *2 generic phase: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *2 generic phase: 7 +2025/08/19 11:15:08 [debug] 396703#396703: *2 access phase: 8 +2025/08/19 11:15:08 [debug] 396703#396703: *2 access: 0100007F 00000000 00000000 +2025/08/19 11:15:08 [error] 396703#396703: *2 access forbidden by rule, client: 127.0.0.1, server: localhost, request: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1", host: "localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http finalize request: 403, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http special response: 403, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http set discard body +2025/08/19 11:15:08 [debug] 396703#396703: *2 HTTP/1.1 403 Forbidden +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:15:08 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 11:15:08 [debug] 396703#396703: *2 write new buf t:1 f:0 000059E44D5398C8, pos 000059E44D5398C8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http write filter: l:0 f:0 s:164 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 000059E44D5399E0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 write old buf t:1 f:0 000059E44D5398C8, pos 000059E44D5398C8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 write new buf t:0 f:0 0000000000000000, pos 000059E437962600, size: 100 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 write new buf t:0 f:0 0000000000000000, pos 000059E437962C80, size: 62 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http write filter: l:1 f:0 s:326 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http write filter limit 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 writev: 326 of 326 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http write filter 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *2 http finalize request: 0, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 set http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *2 http close request +2025/08/19 11:15:08 [debug] 396703#396703: *2 http log handler +2025/08/19 11:15:08 [debug] 396703#396703: *2 free: 000059E44D538A10, unused: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 free: 000059E44D52ED80, unused: 2685 +2025/08/19 11:15:08 [debug] 396703#396703: *2 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 hc free: 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *2 hc busy: 0000000000000000 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 tcp_nodelay +2025/08/19 11:15:08 [debug] 396703#396703: *2 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 event timer add: 6: 65000:183306945 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 0 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 65000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:2001 d:000073179989A1E1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *2 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *2 recv: eof:1, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *2 recv: fd:6 0 of 1024 +2025/08/19 11:15:08 [info] 396703#396703: *2 client 127.0.0.1 closed keepalive connection +2025/08/19 11:15:08 [debug] 396703#396703: *2 close http connection: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *2 event timer del: 6: 183306945 +2025/08/19 11:15:08 [debug] 396703#396703: *2 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *2 free: 000059E44D519840, unused: 136 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 1 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: -1 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:5 ev:0001 d:000073179989A010 +2025/08/19 11:15:08 [debug] 396703#396703: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:15:08 [debug] 396703#396703: posix_memalign: 000059E44D519840:512 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *3 accept: 127.0.0.1:55942 fd:6 +2025/08/19 11:15:08 [debug] 396703#396703: *3 event timer add: 6: 60000:183301967 +2025/08/19 11:15:08 [debug] 396703#396703: *3 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 21 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 60000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:0001 d:000073179989A1E0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http wait request handler +2025/08/19 11:15:08 [debug] 396703#396703: *3 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *3 recv: eof:0, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 recv: fd:6 668 of 1024 +2025/08/19 11:15:08 [debug] 396703#396703: *3 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 posix_memalign: 000059E44D538A10:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http process request line +2025/08/19 11:15:08 [debug] 396703#396703: *3 http request line: "DELETE /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef HTTP/1.1" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http uri: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http args: "" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http exten: "" +2025/08/19 11:15:08 [debug] 396703#396703: *3 posix_memalign: 000059E44D52ED80:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http process request header line +2025/08/19 11:15:08 [debug] 396703#396703: *3 http header: "Host: localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http header: "Accept: */*" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http header: "Authorization: Nostr ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwKICAia2luZCI6IDI0MjQyLAogICJjb250ZW50IjogIkRlbGV0ZSBub24tZXhpc3RlbnQiLAogICJjcmVhdGVkX2F0IjogMTc1NTYxNjUwOCwKICAidGFncyI6IFsKICAgIFsidCIsICJkZWxldGUiXSwKICAgIFsieCIsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3ODkwYWJjZGVmIl0sCiAgICBbImV4cGlyYXRpb24iLCAiMTc1NTYyMDEwOCJdCiAgXSwKICAic2lnIjogInBsYWNlaG9sZGVyX3NpZ25hdHVyZSIKfQo=" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http header done +2025/08/19 11:15:08 [debug] 396703#396703: *3 event timer del: 6: 183301967 +2025/08/19 11:15:08 [debug] 396703#396703: *3 generic phase: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 rewrite phase: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 test location: "/health" +2025/08/19 11:15:08 [debug] 396703#396703: *3 test location: "/debug/list" +2025/08/19 11:15:08 [debug] 396703#396703: *3 test location: "/" +2025/08/19 11:15:08 [debug] 396703#396703: *3 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *3 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http cl:-1 max:104857600 +2025/08/19 11:15:08 [debug] 396703#396703: *3 rewrite phase: 3 +2025/08/19 11:15:08 [debug] 396703#396703: *3 post rewrite phase: 4 +2025/08/19 11:15:08 [debug] 396703#396703: *3 generic phase: 5 +2025/08/19 11:15:08 [debug] 396703#396703: *3 generic phase: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *3 generic phase: 7 +2025/08/19 11:15:08 [debug] 396703#396703: *3 access phase: 8 +2025/08/19 11:15:08 [debug] 396703#396703: *3 access: 0100007F 00000000 00000000 +2025/08/19 11:15:08 [error] 396703#396703: *3 access forbidden by rule, client: 127.0.0.1, server: localhost, request: "DELETE /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef HTTP/1.1", host: "localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http finalize request: 403, "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http special response: 403, "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http set discard body +2025/08/19 11:15:08 [debug] 396703#396703: *3 HTTP/1.1 403 Forbidden +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:15:08 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 11:15:08 [debug] 396703#396703: *3 write new buf t:1 f:0 000059E44D5398C8, pos 000059E44D5398C8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http write filter: l:0 f:0 s:164 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http output filter "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http copy filter: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http postpone filter "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" 000059E44D5399E0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 write old buf t:1 f:0 000059E44D5398C8, pos 000059E44D5398C8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 write new buf t:0 f:0 0000000000000000, pos 000059E437962600, size: 100 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 write new buf t:0 f:0 0000000000000000, pos 000059E437962C80, size: 62 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http write filter: l:1 f:0 s:326 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http write filter limit 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 writev: 326 of 326 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http write filter 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http copy filter: 0 "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:15:08 [debug] 396703#396703: *3 http finalize request: 0, "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 set http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *3 http close request +2025/08/19 11:15:08 [debug] 396703#396703: *3 http log handler +2025/08/19 11:15:08 [debug] 396703#396703: *3 free: 000059E44D538A10, unused: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 free: 000059E44D52ED80, unused: 2685 +2025/08/19 11:15:08 [debug] 396703#396703: *3 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 hc free: 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *3 hc busy: 0000000000000000 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 tcp_nodelay +2025/08/19 11:15:08 [debug] 396703#396703: *3 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 event timer add: 6: 65000:183306967 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 0 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 65000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:2001 d:000073179989A1E0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *3 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *3 recv: eof:1, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *3 recv: fd:6 0 of 1024 +2025/08/19 11:15:08 [info] 396703#396703: *3 client 127.0.0.1 closed keepalive connection +2025/08/19 11:15:08 [debug] 396703#396703: *3 close http connection: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *3 event timer del: 6: 183306967 +2025/08/19 11:15:08 [debug] 396703#396703: *3 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *3 free: 000059E44D519840, unused: 136 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 0 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: -1 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:5 ev:0001 d:000073179989A010 +2025/08/19 11:15:08 [debug] 396703#396703: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:15:08 [debug] 396703#396703: posix_memalign: 000059E44D519840:512 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *4 accept: 127.0.0.1:55948 fd:6 +2025/08/19 11:15:08 [debug] 396703#396703: *4 event timer add: 6: 60000:183301987 +2025/08/19 11:15:08 [debug] 396703#396703: *4 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 20 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 60000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:0001 d:000073179989A1E1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http wait request handler +2025/08/19 11:15:08 [debug] 396703#396703: *4 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *4 recv: eof:0, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 recv: fd:6 676 of 1024 +2025/08/19 11:15:08 [debug] 396703#396703: *4 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 posix_memalign: 000059E44D538A10:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http process request line +2025/08/19 11:15:08 [debug] 396703#396703: *4 http request line: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http uri: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http args: "" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http exten: "" +2025/08/19 11:15:08 [debug] 396703#396703: *4 posix_memalign: 000059E44D52ED80:4096 @16 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http process request header line +2025/08/19 11:15:08 [debug] 396703#396703: *4 http header: "Host: localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http header: "Accept: */*" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http header: "Authorization: Nostr ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwKICAia2luZCI6IDI0MjQyLAogICJjb250ZW50IjogIkRlbGV0ZSB3aXRoIHdyb25nIHB1YmtleSIsCiAgImNyZWF0ZWRfYXQiOiAxNzU1NjE2NTA4LAogICJ0YWdzIjogWwogICAgWyJ0IiwgImRlbGV0ZSJdLAogICAgWyJ4IiwgIjcwOGQwZTgyMjZlYzE3YjA1ODU0MTdjMGVjOTM1MmNlNWY1MmMzODIwYzkwNGI3MDY2ZmUyMGIwMGYyZDljZmUiXSwKICAgIFsiZXhwaXJhdGlvbiIsICIxNzU1NjIwMTA4Il0KICBdLAogICJzaWciOiAicGxhY2Vob2xkZXJfc2lnbmF0dXJlIgp9Cg==" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http header done +2025/08/19 11:15:08 [debug] 396703#396703: *4 event timer del: 6: 183301987 +2025/08/19 11:15:08 [debug] 396703#396703: *4 generic phase: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 rewrite phase: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 test location: "/health" +2025/08/19 11:15:08 [debug] 396703#396703: *4 test location: "/debug/list" +2025/08/19 11:15:08 [debug] 396703#396703: *4 test location: "/" +2025/08/19 11:15:08 [debug] 396703#396703: *4 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *4 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http cl:-1 max:104857600 +2025/08/19 11:15:08 [debug] 396703#396703: *4 rewrite phase: 3 +2025/08/19 11:15:08 [debug] 396703#396703: *4 post rewrite phase: 4 +2025/08/19 11:15:08 [debug] 396703#396703: *4 generic phase: 5 +2025/08/19 11:15:08 [debug] 396703#396703: *4 generic phase: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *4 generic phase: 7 +2025/08/19 11:15:08 [debug] 396703#396703: *4 access phase: 8 +2025/08/19 11:15:08 [debug] 396703#396703: *4 access: 0100007F 00000000 00000000 +2025/08/19 11:15:08 [error] 396703#396703: *4 access forbidden by rule, client: 127.0.0.1, server: localhost, request: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1", host: "localhost:9001" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http finalize request: 403, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http special response: 403, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http set discard body +2025/08/19 11:15:08 [debug] 396703#396703: *4 HTTP/1.1 403 Forbidden +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:15:08 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 11:15:08 [debug] 396703#396703: *4 write new buf t:1 f:0 000059E44D5398C8, pos 000059E44D5398C8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http write filter: l:0 f:0 s:164 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 000059E44D5399E0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 write old buf t:1 f:0 000059E44D5398C8, pos 000059E44D5398C8, size: 164 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 write new buf t:0 f:0 0000000000000000, pos 000059E437962600, size: 100 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 write new buf t:0 f:0 0000000000000000, pos 000059E437962C80, size: 62 file: 0, size: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http write filter: l:1 f:0 s:326 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http write filter limit 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 writev: 326 of 326 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http write filter 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:15:08 [debug] 396703#396703: *4 http finalize request: 0, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 set http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *4 http close request +2025/08/19 11:15:08 [debug] 396703#396703: *4 http log handler +2025/08/19 11:15:08 [debug] 396703#396703: *4 free: 000059E44D538A10, unused: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 free: 000059E44D52ED80, unused: 2685 +2025/08/19 11:15:08 [debug] 396703#396703: *4 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 hc free: 0000000000000000 +2025/08/19 11:15:08 [debug] 396703#396703: *4 hc busy: 0000000000000000 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 tcp_nodelay +2025/08/19 11:15:08 [debug] 396703#396703: *4 reusable connection: 1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 event timer add: 6: 65000:183306987 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 0 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: 65000 +2025/08/19 11:15:08 [debug] 396703#396703: epoll: fd:6 ev:2001 d:000073179989A1E1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 http keepalive handler +2025/08/19 11:15:08 [debug] 396703#396703: *4 malloc: 000059E44D51C0A0:1024 +2025/08/19 11:15:08 [debug] 396703#396703: *4 recv: eof:1, avail:-1 +2025/08/19 11:15:08 [debug] 396703#396703: *4 recv: fd:6 0 of 1024 +2025/08/19 11:15:08 [info] 396703#396703: *4 client 127.0.0.1 closed keepalive connection +2025/08/19 11:15:08 [debug] 396703#396703: *4 close http connection: 6 +2025/08/19 11:15:08 [debug] 396703#396703: *4 event timer del: 6: 183306987 +2025/08/19 11:15:08 [debug] 396703#396703: *4 reusable connection: 0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 free: 000059E44D51C0A0 +2025/08/19 11:15:08 [debug] 396703#396703: *4 free: 000059E44D519840, unused: 136 +2025/08/19 11:15:08 [debug] 396703#396703: timer delta: 1 +2025/08/19 11:15:08 [debug] 396703#396703: worker cycle +2025/08/19 11:15:08 [debug] 396703#396703: epoll timer: -1 +2025/08/19 11:16:28 [notice] 396702#396702: signal 15 (SIGTERM) received from 398214, exiting +2025/08/19 11:16:28 [debug] 396702#396702: wake up, sigio 0 +2025/08/19 11:16:28 [debug] 396702#396702: child: 0 396703 e:0 t:0 d:0 r:1 j:0 +2025/08/19 11:16:28 [debug] 396702#396702: termination cycle: 50 +2025/08/19 11:16:28 [debug] 396702#396702: sigsuspend +2025/08/19 11:16:28 [debug] 396703#396703: epoll: fd:7 ev:0001 d:000073179989A0F8 +2025/08/19 11:16:28 [debug] 396703#396703: channel handler +2025/08/19 11:16:28 [debug] 396703#396703: channel: 32 +2025/08/19 11:16:28 [debug] 396703#396703: channel command: 4 +2025/08/19 11:16:28 [debug] 396703#396703: channel: -2 +2025/08/19 11:16:28 [debug] 396703#396703: timer delta: 79940 +2025/08/19 11:16:28 [notice] 396703#396703: exiting +2025/08/19 11:16:28 [debug] 396703#396703: flush files +2025/08/19 11:16:28 [debug] 396703#396703: run cleanup: 000059E44D567A80 +2025/08/19 11:16:28 [debug] 396703#396703: run cleanup: 000059E44D55AA00 +2025/08/19 11:16:28 [debug] 396703#396703: cleanup resolver +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D568DC0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D55BBC0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D53AB30 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D539A20 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D5339F0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D532930 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D531870 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D5307B0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D528160 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D51F130, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D529560, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D534A00, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D53BB40, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D53FB50, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D543B60, unused: 1 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D547B70, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D54BB80, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D54FB90, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D553BA0, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D557BB0, unused: 3 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D55CD90, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D560DA0, unused: 0 +2025/08/19 11:16:28 [debug] 396703#396703: free: 000059E44D564DB0, unused: 4888 +2025/08/19 11:16:28 [notice] 396703#396703: exit +2025/08/19 11:16:28 [notice] 396702#396702: signal 17 (SIGCHLD) received from 396703 +2025/08/19 11:16:28 [notice] 396702#396702: worker process 396703 exited with code 0 +2025/08/19 11:16:28 [debug] 396702#396702: shmtx forced unlock +2025/08/19 11:16:28 [debug] 396702#396702: wake up, sigio 3 +2025/08/19 11:16:28 [debug] 396702#396702: reap children +2025/08/19 11:16:28 [debug] 396702#396702: child: 0 396703 e:1 t:1 d:0 r:1 j:0 +2025/08/19 11:16:28 [notice] 396702#396702: exit +2025/08/19 11:16:28 [debug] 396702#396702: close listening 0.0.0.0:9001 #5 +2025/08/19 11:16:28 [debug] 396702#396702: run cleanup: 000059E44D55AA00 +2025/08/19 11:16:28 [debug] 396702#396702: cleanup resolver +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D568DC0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D55BBC0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D53AB30 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D539A20 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D5339F0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D532930 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D531870 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D5307B0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D528160 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D51F130, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D529560, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D534A00, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D53BB40, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D53FB50, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D543B60, unused: 1 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D547B70, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D54BB80, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D54FB90, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D553BA0, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D557BB0, unused: 3 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D55CD90, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D560DA0, unused: 0 +2025/08/19 11:16:28 [debug] 396702#396702: free: 000059E44D564DB0, unused: 4919 +2025/08/19 11:16:28 [debug] 398215#398215: bind() 0.0.0.0:9001 #5 +2025/08/19 11:16:28 [notice] 398215#398215: using the "epoll" event method +2025/08/19 11:16:28 [debug] 398215#398215: counter: 00007877C5F91080, 1 +2025/08/19 11:16:28 [notice] 398215#398215: nginx/1.18.0 (Ubuntu) +2025/08/19 11:16:28 [notice] 398215#398215: OS: Linux 6.12.10-76061203-generic +2025/08/19 11:16:28 [notice] 398215#398215: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 11:16:28 [debug] 398216#398215: write: 6, 00007FFE4490FDB0, 7, 0 +2025/08/19 11:16:28 [debug] 398216#398216: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 11:16:28 [notice] 398216#398216: start worker processes +2025/08/19 11:16:28 [debug] 398216#398216: channel 6:7 +2025/08/19 11:16:28 [notice] 398216#398216: start worker process 398217 +2025/08/19 11:16:28 [debug] 398216#398216: sigsuspend +2025/08/19 11:16:28 [debug] 398217#398217: add cleanup: 000061F3F26F4A70 +2025/08/19 11:16:28 [debug] 398217#398217: malloc: 000061F3F26A7BD0:8 +2025/08/19 11:16:28 [debug] 398217#398217: notify eventfd: 9 +2025/08/19 11:16:28 [debug] 398217#398217: testing the EPOLLRDHUP flag: success +2025/08/19 11:16:28 [debug] 398217#398217: malloc: 000061F3F26BA580:6144 +2025/08/19 11:16:28 [debug] 398217#398217: malloc: 00007877C5D89010:237568 +2025/08/19 11:16:28 [debug] 398217#398217: malloc: 000061F3F26F76A0:98304 +2025/08/19 11:16:28 [debug] 398217#398217: malloc: 000061F3F270F6B0:98304 +2025/08/19 11:16:28 [debug] 398217#398217: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 11:16:28 [debug] 398217#398217: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 11:16:28 [debug] 398217#398217: setproctitle: "nginx: worker process" +2025/08/19 11:16:28 [debug] 398217#398217: worker cycle +2025/08/19 11:16:28 [debug] 398217#398217: epoll timer: -1 +2025/08/19 11:16:37 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 11:16:37 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:16:37 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 11:16:37 [debug] 398217#398217: *1 accept: 127.0.0.1:37222 fd:6 +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer add: 6: 60000:183391092 +2025/08/19 11:16:37 [debug] 398217#398217: *1 reusable connection: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:16:37 [debug] 398217#398217: timer delta: 9160 +2025/08/19 11:16:37 [debug] 398217#398217: worker cycle +2025/08/19 11:16:37 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:37 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http wait request handler +2025/08/19 11:16:37 [debug] 398217#398217: *1 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:37 [debug] 398217#398217: *1 recv: eof:0, avail:-1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 recv: fd:6 145 of 1024 +2025/08/19 11:16:37 [debug] 398217#398217: *1 reusable connection: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http process request line +2025/08/19 11:16:37 [debug] 398217#398217: *1 http request line: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http uri: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http args: "" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http exten: "" +2025/08/19 11:16:37 [debug] 398217#398217: *1 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http process request header line +2025/08/19 11:16:37 [debug] 398217#398217: *1 http header: "Host: localhost:9001" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http header: "Accept: */*" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http header done +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer del: 6: 183391092 +2025/08/19 11:16:37 [debug] 398217#398217: *1 generic phase: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 rewrite phase: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 test location: "/health" +2025/08/19 11:16:37 [debug] 398217#398217: *1 test location: "/debug/list" +2025/08/19 11:16:37 [debug] 398217#398217: *1 test location: "/" +2025/08/19 11:16:37 [debug] 398217#398217: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:37 [debug] 398217#398217: *1 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http cl:-1 max:104857600 +2025/08/19 11:16:37 [debug] 398217#398217: *1 rewrite phase: 3 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "DELETE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script value: "DELETE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script not equal +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script not equal: no +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script if +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script if: false +2025/08/19 11:16:37 [debug] 398217#398217: *1 post rewrite phase: 4 +2025/08/19 11:16:37 [debug] 398217#398217: *1 generic phase: 5 +2025/08/19 11:16:37 [debug] 398217#398217: *1 generic phase: 6 +2025/08/19 11:16:37 [debug] 398217#398217: *1 generic phase: 7 +2025/08/19 11:16:37 [debug] 398217#398217: *1 access phase: 8 +2025/08/19 11:16:37 [debug] 398217#398217: *1 access phase: 9 +2025/08/19 11:16:37 [debug] 398217#398217: *1 access phase: 10 +2025/08/19 11:16:37 [debug] 398217#398217: *1 post access phase: 11 +2025/08/19 11:16:37 [debug] 398217#398217: *1 generic phase: 12 +2025/08/19 11:16:37 [debug] 398217#398217: *1 generic phase: 13 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http init upstream, client timer: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "QUERY_STRING" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "QUERY_STRING: " +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "REQUEST_METHOD" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "DELETE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "REQUEST_METHOD: DELETE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "CONTENT_TYPE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "CONTENT_TYPE: " +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "CONTENT_LENGTH" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "CONTENT_LENGTH: " +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SCRIPT_NAME" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SCRIPT_NAME: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "REQUEST_URI" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "REQUEST_URI: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "DOCUMENT_URI" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "DOCUMENT_URI: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "DOCUMENT_ROOT" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "./blobs" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SERVER_PROTOCOL" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "HTTP/1.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "REQUEST_SCHEME" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "http" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "GATEWAY_INTERFACE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "CGI/1.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SERVER_SOFTWARE" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "nginx/" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "1.18.0" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "REMOTE_ADDR" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "127.0.0.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "REMOTE_PORT" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "37222" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "REMOTE_PORT: 37222" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SERVER_ADDR" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "127.0.0.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SERVER_PORT" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "9001" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SERVER_NAME" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "localhost" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "REDIRECT_STATUS" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "200" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "SCRIPT_FILENAME" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script var: "./blobs" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http script copy: "/ginxsom.fcgi" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 11:16:37 [debug] 398217#398217: *1 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http cleanup add: 000061F3F26C6A08 +2025/08/19 11:16:37 [debug] 398217#398217: *1 get rr peer, try: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 stream socket 10 +2025/08/19 11:16:37 [debug] 398217#398217: *1 epoll add connection: fd:10 ev:80002005 +2025/08/19 11:16:37 [debug] 398217#398217: *1 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #2 +2025/08/19 11:16:37 [debug] 398217#398217: *1 connected +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream connect: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream send request +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream send request body +2025/08/19 11:16:37 [debug] 398217#398217: *1 chain writer buf fl:0 s:696 +2025/08/19 11:16:37 [debug] 398217#398217: *1 chain writer in: 000061F3F26BCB00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 writev: 696 of 696 +2025/08/19 11:16:37 [debug] 398217#398217: *1 chain writer out: 0000000000000000 +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer add: 10: 60000:183391092 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http finalize request: -4, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:2 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http request count:2 blk:0 +2025/08/19 11:16:37 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:37 [debug] 398217#398217: worker cycle +2025/08/19 11:16:37 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:37 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http run request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream check client, write event:1, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C8 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream dummy handler +2025/08/19 11:16:37 [debug] 398217#398217: timer delta: 2 +2025/08/19 11:16:37 [debug] 398217#398217: worker cycle +2025/08/19 11:16:37 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 11:16:37 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C8 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream process header +2025/08/19 11:16:37 [debug] 398217#398217: *1 malloc: 000061F3F26B0140:4096 +2025/08/19 11:16:37 [debug] 398217#398217: *1 recv: eof:1, avail:-1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 recv: fd:10 768 of 4096 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 01 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 06 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 01 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 02 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: DD +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 03 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record length: 733 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "DEBUG: METHOD=DELETE, URI=/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 posix_memalign: 000061F3F26B1150:4096 @16 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "DEBUG: DELETE request - extracted SHA256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "DEBUG: handle_delete_request called with sha256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "LOG: [2025-08-19 11:16:37] DELETE /delete - Auth: pending - Status: 0" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header: "Content-Type: application/json" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi parser: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi header done +2025/08/19 11:16:37 [debug] 398217#398217: *1 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:16:37 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=DELETE, URI=/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: DELETE request - extracted SHA256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: handle_delete_request called with sha256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +LOG: [2025-08-19 11:16:37] DELETE /delete - Auth: pending - Status: 0 + +2025/08/19 11:16:37 [debug] 398217#398217: *1 write new buf t:1 f:0 000061F3F26B1348, pos 000061F3F26B1348, size: 599 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http write filter: l:0 f:0 s:599 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http cacheable: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream process upstream +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe read upstream: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe preread: 282 +2025/08/19 11:16:37 [debug] 398217#398217: *1 readv: eof:1, avail:0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 readv: 1, last:3328 +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe recv chain: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe buf free s:0 t:1 f:0 000061F3F26B0140, pos 000061F3F26B0326, size: 282 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe length: -1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 input buf #0 000061F3F26B0326 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 01 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 06 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 01 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record length: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi closed stdout +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 01 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 03 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 01 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 08 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record byte: 00 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi record length: 8 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http fastcgi sent end request +2025/08/19 11:16:37 [debug] 398217#398217: *1 input buf 000061F3F26B0326 255 +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe write downstream: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe write downstream flush in +2025/08/19 11:16:37 [debug] 398217#398217: *1 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 000061F3F26B16C8 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http chunk: 255 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write old buf t:1 f:0 000061F3F26B1348, pos 000061F3F26B1348, size: 599 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write new buf t:1 f:0 000061F3F26B1820, pos 000061F3F26B1820, size: 4 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write new buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0326, size: 255 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http write filter: l:0 f:0 s:860 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 pipe write downstream done +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer: 10, old: 183391092, new: 183391094 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream exit: 0000000000000000 +2025/08/19 11:16:37 [debug] 398217#398217: *1 finalize http upstream request: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 finalize http fastcgi request +2025/08/19 11:16:37 [debug] 398217#398217: *1 free rr peer 1 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 close http upstream connection: 10 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F268FF20, unused: 48 +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer del: 10: 183391092 +2025/08/19 11:16:37 [debug] 398217#398217: *1 reusable connection: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http upstream temp fd: -1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 00007FFE4490F9F0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http chunk: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write old buf t:1 f:0 000061F3F26B1348, pos 000061F3F26B1348, size: 599 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write old buf t:1 f:0 000061F3F26B1820, pos 000061F3F26B1820, size: 4 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write old buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0326, size: 255 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http write filter: l:1 f:0 s:865 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http write filter limit 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 writev: 865 of 865 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http write filter 0000000000000000 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:37 [debug] 398217#398217: *1 http finalize request: 0, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 set http keepalive handler +2025/08/19 11:16:37 [debug] 398217#398217: *1 http close request +2025/08/19 11:16:37 [debug] 398217#398217: *1 http log handler +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26B0140 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26C5A20, unused: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26BBD90, unused: 12 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26B1150, unused: 1805 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26A90A0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 hc free: 0000000000000000 +2025/08/19 11:16:37 [debug] 398217#398217: *1 hc busy: 0000000000000000 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 tcp_nodelay +2025/08/19 11:16:37 [debug] 398217#398217: *1 reusable connection: 1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer add: 6: 65000:183396094 +2025/08/19 11:16:37 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:37 [debug] 398217#398217: worker cycle +2025/08/19 11:16:37 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 11:16:37 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 http keepalive handler +2025/08/19 11:16:37 [debug] 398217#398217: *1 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:37 [debug] 398217#398217: *1 recv: eof:1, avail:-1 +2025/08/19 11:16:37 [debug] 398217#398217: *1 recv: fd:6 0 of 1024 +2025/08/19 11:16:37 [info] 398217#398217: *1 client 127.0.0.1 closed keepalive connection +2025/08/19 11:16:37 [debug] 398217#398217: *1 close http connection: 6 +2025/08/19 11:16:37 [debug] 398217#398217: *1 event timer del: 6: 183396094 +2025/08/19 11:16:37 [debug] 398217#398217: *1 reusable connection: 0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26A90A0 +2025/08/19 11:16:37 [debug] 398217#398217: *1 free: 000061F3F26A6840, unused: 120 +2025/08/19 11:16:37 [debug] 398217#398217: timer delta: 2 +2025/08/19 11:16:37 [debug] 398217#398217: worker cycle +2025/08/19 11:16:37 [debug] 398217#398217: epoll timer: -1 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 11:16:38 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:16:38 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *3 accept: 127.0.0.1:37234 fd:6 +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer add: 6: 60000:183391118 +2025/08/19 11:16:38 [debug] 398217#398217: *3 reusable connection: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 22 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http wait request handler +2025/08/19 11:16:38 [debug] 398217#398217: *3 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:38 [debug] 398217#398217: *3 recv: eof:0, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 recv: fd:6 196 of 1024 +2025/08/19 11:16:38 [debug] 398217#398217: *3 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http process request line +2025/08/19 11:16:38 [debug] 398217#398217: *3 http request line: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http uri: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http args: "" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http exten: "" +2025/08/19 11:16:38 [debug] 398217#398217: *3 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http process request header line +2025/08/19 11:16:38 [debug] 398217#398217: *3 http header: "Host: localhost:9001" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http header: "Accept: */*" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http header: "Authorization: Nostr eyJpbnZhbGlkIjogImV2ZW50In0K" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http header done +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer del: 6: 183391118 +2025/08/19 11:16:38 [debug] 398217#398217: *3 generic phase: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 rewrite phase: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 test location: "/health" +2025/08/19 11:16:38 [debug] 398217#398217: *3 test location: "/debug/list" +2025/08/19 11:16:38 [debug] 398217#398217: *3 test location: "/" +2025/08/19 11:16:38 [debug] 398217#398217: *3 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:38 [debug] 398217#398217: *3 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http cl:-1 max:104857600 +2025/08/19 11:16:38 [debug] 398217#398217: *3 rewrite phase: 3 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script value: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script not equal +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script not equal: no +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script if +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script if: false +2025/08/19 11:16:38 [debug] 398217#398217: *3 post rewrite phase: 4 +2025/08/19 11:16:38 [debug] 398217#398217: *3 generic phase: 5 +2025/08/19 11:16:38 [debug] 398217#398217: *3 generic phase: 6 +2025/08/19 11:16:38 [debug] 398217#398217: *3 generic phase: 7 +2025/08/19 11:16:38 [debug] 398217#398217: *3 access phase: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *3 access phase: 9 +2025/08/19 11:16:38 [debug] 398217#398217: *3 access phase: 10 +2025/08/19 11:16:38 [debug] 398217#398217: *3 post access phase: 11 +2025/08/19 11:16:38 [debug] 398217#398217: *3 generic phase: 12 +2025/08/19 11:16:38 [debug] 398217#398217: *3 generic phase: 13 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http init upstream, client timer: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "QUERY_STRING" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "QUERY_STRING: " +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "REQUEST_METHOD" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "REQUEST_METHOD: DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "CONTENT_TYPE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "CONTENT_TYPE: " +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "CONTENT_LENGTH" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "CONTENT_LENGTH: " +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SCRIPT_NAME" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SCRIPT_NAME: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "REQUEST_URI" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "REQUEST_URI: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "DOCUMENT_URI" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "DOCUMENT_URI: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "DOCUMENT_ROOT" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SERVER_PROTOCOL" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "REQUEST_SCHEME" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "http" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "GATEWAY_INTERFACE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "CGI/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SERVER_SOFTWARE" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "nginx/" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "1.18.0" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "REMOTE_ADDR" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "REMOTE_PORT" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "37234" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "REMOTE_PORT: 37234" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SERVER_ADDR" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SERVER_PORT" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "9001" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SERVER_NAME" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "localhost" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "REDIRECT_STATUS" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "200" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "SCRIPT_FILENAME" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script var: "./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http script copy: "/ginxsom.fcgi" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 11:16:38 [debug] 398217#398217: *3 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJpbnZhbGlkIjogImV2ZW50In0K" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http cleanup add: 000061F3F26BCB08 +2025/08/19 11:16:38 [debug] 398217#398217: *3 get rr peer, try: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 stream socket 10 +2025/08/19 11:16:38 [debug] 398217#398217: *3 epoll add connection: fd:10 ev:80002005 +2025/08/19 11:16:38 [debug] 398217#398217: *3 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #4 +2025/08/19 11:16:38 [debug] 398217#398217: *3 connected +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream connect: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream send request +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream send request body +2025/08/19 11:16:38 [debug] 398217#398217: *3 chain writer buf fl:0 s:744 +2025/08/19 11:16:38 [debug] 398217#398217: *3 chain writer in: 000061F3F26BCB48 +2025/08/19 11:16:38 [debug] 398217#398217: *3 writev: 744 of 744 +2025/08/19 11:16:38 [debug] 398217#398217: *3 chain writer out: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer add: 10: 60000:183391118 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http finalize request: -4, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:2 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http request count:2 blk:0 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http run request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream check client, write event:1, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C9 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream dummy handler +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 2 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C9 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream process header +2025/08/19 11:16:38 [debug] 398217#398217: *3 malloc: 000061F3F26B0140:4096 +2025/08/19 11:16:38 [debug] 398217#398217: *3 recv: eof:1, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 recv: fd:10 1112 of 4096 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 06 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 04 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 33 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 05 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record length: 1075 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 posix_memalign: 000061F3F26B1150:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: METHOD=DELETE, URI=/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: DELETE request - extracted SHA256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: handle_delete_request called with sha256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "LOG: [2025-08-19 11:16:38] DELETE /delete - Auth: pending - Status: 0" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: Authenticating request - method: delete, hash: 708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: Base64 event from header: eyJpbnZhbGlkIjogImV2ZW50In0K..." +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"invalid": "event"}" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "...: " +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "DEBUG: Nostr event validation failed: -30 (Event has invalid structure)" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header: "Content-Type: application/json" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi parser: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi header done +2025/08/19 11:16:38 [debug] 398217#398217: *3 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:16:38 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=DELETE, URI=/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: DELETE request - extracted SHA256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: handle_delete_request called with sha256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +LOG: [2025-08-19 11:16:38] DELETE /delete - Auth: pending - Status: 0 +DEBUG: Authenticating request - method: delete, hash: 708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: Base64 event from header: eyJpbnZhbGlkIjogImV2ZW50In0K... +DEBUG: Parsed authorization header, extracted JSON: {"invalid": "event"} +DEBUG: Nostr event validation failed: -30 (Event has invalid structure) + +2025/08/19 11:16:38 [debug] 398217#398217: *3 write new buf t:1 f:0 000061F3F26B1680, pos 000061F3F26B1680, size: 932 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http write filter: l:0 f:0 s:932 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http cacheable: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream process upstream +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe read upstream: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe preread: 289 +2025/08/19 11:16:38 [debug] 398217#398217: *3 readv: eof:1, avail:0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 readv: 1, last:2984 +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe recv chain: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe buf free s:0 t:1 f:0 000061F3F26B0140, pos 000061F3F26B0477, size: 289 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe length: -1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 input buf #0 000061F3F26B0477 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 06 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record length: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi closed stdout +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 03 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 08 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi record length: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http fastcgi sent end request +2025/08/19 11:16:38 [debug] 398217#398217: *3 input buf 000061F3F26B0477 260 +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe write downstream: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe write downstream flush in +2025/08/19 11:16:38 [debug] 398217#398217: *3 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 000061F3F26B1B50 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http chunk: 260 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write old buf t:1 f:0 000061F3F26B1680, pos 000061F3F26B1680, size: 932 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write new buf t:1 f:0 000061F3F26B1CA8, pos 000061F3F26B1CA8, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write new buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0477, size: 260 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http write filter: l:0 f:0 s:1199 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 pipe write downstream done +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer: 10, old: 183391118, new: 183391120 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream exit: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *3 finalize http upstream request: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 finalize http fastcgi request +2025/08/19 11:16:38 [debug] 398217#398217: *3 free rr peer 1 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 close http upstream connection: 10 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F268FF20, unused: 48 +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer del: 10: 183391118 +2025/08/19 11:16:38 [debug] 398217#398217: *3 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http upstream temp fd: -1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 00007FFE4490F9F0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http chunk: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write old buf t:1 f:0 000061F3F26B1680, pos 000061F3F26B1680, size: 932 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write old buf t:1 f:0 000061F3F26B1CA8, pos 000061F3F26B1CA8, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write old buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0477, size: 260 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http write filter: l:1 f:0 s:1204 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http write filter limit 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 writev: 1204 of 1204 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http write filter 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *3 http finalize request: 0, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 set http keepalive handler +2025/08/19 11:16:38 [debug] 398217#398217: *3 http close request +2025/08/19 11:16:38 [debug] 398217#398217: *3 http log handler +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26B0140 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26C5A20, unused: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26BBD90, unused: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26B1150, unused: 645 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26A90A0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 hc free: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *3 hc busy: 0000000000000000 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 tcp_nodelay +2025/08/19 11:16:38 [debug] 398217#398217: *3 reusable connection: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer add: 6: 65000:183396120 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 http keepalive handler +2025/08/19 11:16:38 [debug] 398217#398217: *3 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:38 [debug] 398217#398217: *3 recv: eof:1, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *3 recv: fd:6 0 of 1024 +2025/08/19 11:16:38 [info] 398217#398217: *3 client 127.0.0.1 closed keepalive connection +2025/08/19 11:16:38 [debug] 398217#398217: *3 close http connection: 6 +2025/08/19 11:16:38 [debug] 398217#398217: *3 event timer del: 6: 183396120 +2025/08/19 11:16:38 [debug] 398217#398217: *3 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26A90A0 +2025/08/19 11:16:38 [debug] 398217#398217: *3 free: 000061F3F26A6840, unused: 120 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 1 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: -1 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 11:16:38 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:16:38 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *5 accept: 127.0.0.1:37242 fd:6 +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer add: 6: 60000:183391150 +2025/08/19 11:16:38 [debug] 398217#398217: *5 reusable connection: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 29 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http wait request handler +2025/08/19 11:16:38 [debug] 398217#398217: *5 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:38 [debug] 398217#398217: *5 recv: eof:0, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 recv: fd:6 668 of 1024 +2025/08/19 11:16:38 [debug] 398217#398217: *5 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http process request line +2025/08/19 11:16:38 [debug] 398217#398217: *5 http request line: "DELETE /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http uri: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http args: "" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http exten: "" +2025/08/19 11:16:38 [debug] 398217#398217: *5 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http process request header line +2025/08/19 11:16:38 [debug] 398217#398217: *5 http header: "Host: localhost:9001" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http header: "Accept: */*" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http header: "Authorization: Nostr ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwKICAia2luZCI6IDI0MjQyLAogICJjb250ZW50IjogIkRlbGV0ZSBub24tZXhpc3RlbnQiLAogICJjcmVhdGVkX2F0IjogMTc1NTYxNjU5OCwKICAidGFncyI6IFsKICAgIFsidCIsICJkZWxldGUiXSwKICAgIFsieCIsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3ODkwYWJjZGVmIl0sCiAgICBbImV4cGlyYXRpb24iLCAiMTc1NTYyMDE5OCJdCiAgXSwKICAic2lnIjogInBsYWNlaG9sZGVyX3NpZ25hdHVyZSIKfQo=" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http header done +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer del: 6: 183391150 +2025/08/19 11:16:38 [debug] 398217#398217: *5 generic phase: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 rewrite phase: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 test location: "/health" +2025/08/19 11:16:38 [debug] 398217#398217: *5 test location: "/debug/list" +2025/08/19 11:16:38 [debug] 398217#398217: *5 test location: "/" +2025/08/19 11:16:38 [debug] 398217#398217: *5 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:38 [debug] 398217#398217: *5 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http cl:-1 max:104857600 +2025/08/19 11:16:38 [debug] 398217#398217: *5 rewrite phase: 3 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script value: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script not equal +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script not equal: no +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script if +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script if: false +2025/08/19 11:16:38 [debug] 398217#398217: *5 post rewrite phase: 4 +2025/08/19 11:16:38 [debug] 398217#398217: *5 generic phase: 5 +2025/08/19 11:16:38 [debug] 398217#398217: *5 generic phase: 6 +2025/08/19 11:16:38 [debug] 398217#398217: *5 generic phase: 7 +2025/08/19 11:16:38 [debug] 398217#398217: *5 access phase: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 access phase: 9 +2025/08/19 11:16:38 [debug] 398217#398217: *5 access phase: 10 +2025/08/19 11:16:38 [debug] 398217#398217: *5 post access phase: 11 +2025/08/19 11:16:38 [debug] 398217#398217: *5 generic phase: 12 +2025/08/19 11:16:38 [debug] 398217#398217: *5 generic phase: 13 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http init upstream, client timer: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "QUERY_STRING" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "QUERY_STRING: " +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "REQUEST_METHOD" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "REQUEST_METHOD: DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "CONTENT_TYPE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "CONTENT_TYPE: " +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "CONTENT_LENGTH" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "CONTENT_LENGTH: " +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SCRIPT_NAME" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SCRIPT_NAME: /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "REQUEST_URI" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "REQUEST_URI: /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "DOCUMENT_URI" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "DOCUMENT_URI: /1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "DOCUMENT_ROOT" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SERVER_PROTOCOL" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "REQUEST_SCHEME" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "http" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "GATEWAY_INTERFACE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "CGI/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SERVER_SOFTWARE" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "nginx/" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "1.18.0" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "REMOTE_ADDR" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "REMOTE_PORT" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "37242" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "REMOTE_PORT: 37242" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SERVER_ADDR" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SERVER_PORT" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "9001" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SERVER_NAME" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "localhost" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "REDIRECT_STATUS" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "200" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "SCRIPT_FILENAME" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script var: "./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http script copy: "/ginxsom.fcgi" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 11:16:38 [debug] 398217#398217: *5 fastcgi param: "HTTP_AUTHORIZATION: Nostr ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwKICAia2luZCI6IDI0MjQyLAogICJjb250ZW50IjogIkRlbGV0ZSBub24tZXhpc3RlbnQiLAogICJjcmVhdGVkX2F0IjogMTc1NTYxNjU5OCwKICAidGFncyI6IFsKICAgIFsidCIsICJkZWxldGUiXSwKICAgIFsieCIsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3ODkwYWJjZGVmIl0sCiAgICBbImV4cGlyYXRpb24iLCAiMTc1NTYyMDE5OCJdCiAgXSwKICAic2lnIjogInBsYWNlaG9sZGVyX3NpZ25hdHVyZSIKfQo=" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http cleanup add: 000061F3F26BCCE8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 get rr peer, try: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 stream socket 10 +2025/08/19 11:16:38 [debug] 398217#398217: *5 epoll add connection: fd:10 ev:80002005 +2025/08/19 11:16:38 [debug] 398217#398217: *5 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #6 +2025/08/19 11:16:38 [debug] 398217#398217: *5 connected +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream connect: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream send request +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream send request body +2025/08/19 11:16:38 [debug] 398217#398217: *5 chain writer buf fl:0 s:1224 +2025/08/19 11:16:38 [debug] 398217#398217: *5 chain writer in: 000061F3F26BCD28 +2025/08/19 11:16:38 [debug] 398217#398217: *5 writev: 1224 of 1224 +2025/08/19 11:16:38 [debug] 398217#398217: *5 chain writer out: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer add: 10: 60000:183391150 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http finalize request: -4, "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" a:1, c:2 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http request count:2 blk:0 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http run request: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream check client, write event:1, "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream request: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream dummy handler +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 2 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream request: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream process header +2025/08/19 11:16:38 [debug] 398217#398217: *5 malloc: 000061F3F26B0140:4096 +2025/08/19 11:16:38 [debug] 398217#398217: *5 posix_memalign: 000061F3F26B1150:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *5 recv: eof:1, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 recv: fd:10 1256 of 4096 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 06 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 04 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: C3 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 05 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record length: 1219 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: METHOD=DELETE, URI=/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: DELETE request - extracted SHA256=1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: handle_delete_request called with sha256=1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "LOG: [2025-08-19 11:16:38] DELETE /delete - Auth: pending - Status: 0" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: Authenticating request - method: delete, hash: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: Base64 event from header: ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAy..." +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: " "id": "placeholder_id"," +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: " "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f..." +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "DEBUG: Nostr event validation failed: -31 (Event has invalid ID)" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header: "Content-Type: application/json" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi parser: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi header done +2025/08/19 11:16:38 [debug] 398217#398217: *5 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:16:38 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=DELETE, URI=/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +DEBUG: DELETE request - extracted SHA256=1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +DEBUG: handle_delete_request called with sha256=1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +LOG: [2025-08-19 11:16:38] DELETE /delete - Auth: pending - Status: 0 +DEBUG: Authenticating request - method: delete, hash: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +DEBUG: Base64 event from header: ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAy... +DEBUG: Parsed authorization header, extracted JSON: { + "id": "placeholder_id", + "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f... +DEBUG: Nostr event validation failed: -31 (Event has invalid ID) + +2025/08/19 11:16:38 [debug] 398217#398217: *5 write new buf t:1 f:0 000061F3F26B1908, pos 000061F3F26B1908, size: 1082 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http write filter: l:0 f:0 s:1082 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http cacheable: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream process upstream +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe read upstream: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe preread: 289 +2025/08/19 11:16:38 [debug] 398217#398217: *5 readv: eof:1, avail:0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 readv: 1, last:2840 +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe recv chain: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe buf free s:0 t:1 f:0 000061F3F26B0140, pos 000061F3F26B0507, size: 289 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe length: -1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 input buf #0 000061F3F26B0507 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 06 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record length: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi closed stdout +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 03 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 08 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi record length: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http fastcgi sent end request +2025/08/19 11:16:38 [debug] 398217#398217: *5 input buf 000061F3F26B0507 260 +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe write downstream: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe write downstream flush in +2025/08/19 11:16:38 [debug] 398217#398217: *5 http output filter "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http copy filter: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http postpone filter "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" 000061F3F26B1E70 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http chunk: 260 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write old buf t:1 f:0 000061F3F26B1908, pos 000061F3F26B1908, size: 1082 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write new buf t:1 f:0 000061F3F26B1FC8, pos 000061F3F26B1FC8, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write new buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0507, size: 260 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http write filter: l:0 f:0 s:1349 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http copy filter: 0 "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 pipe write downstream done +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer: 10, old: 183391150, new: 183391152 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream exit: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *5 finalize http upstream request: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 finalize http fastcgi request +2025/08/19 11:16:38 [debug] 398217#398217: *5 free rr peer 1 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 close http upstream connection: 10 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F268FF20, unused: 48 +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer del: 10: 183391150 +2025/08/19 11:16:38 [debug] 398217#398217: *5 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http upstream temp fd: -1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http output filter "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http copy filter: "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http postpone filter "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" 00007FFE4490F9F0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http chunk: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write old buf t:1 f:0 000061F3F26B1908, pos 000061F3F26B1908, size: 1082 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write old buf t:1 f:0 000061F3F26B1FC8, pos 000061F3F26B1FC8, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write old buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0507, size: 260 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http write filter: l:1 f:0 s:1354 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http write filter limit 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 writev: 1354 of 1354 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http write filter 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http copy filter: 0 "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" +2025/08/19 11:16:38 [debug] 398217#398217: *5 http finalize request: 0, "/1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef?" a:1, c:1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 set http keepalive handler +2025/08/19 11:16:38 [debug] 398217#398217: *5 http close request +2025/08/19 11:16:38 [debug] 398217#398217: *5 http log handler +2025/08/19 11:16:38 [debug] 398217#398217: *5 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26B0140 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26C5A20, unused: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26BBD90, unused: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26B1150, unused: 32 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26B2160, unused: 3877 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26A90A0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 hc free: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *5 hc busy: 0000000000000000 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 tcp_nodelay +2025/08/19 11:16:38 [debug] 398217#398217: *5 reusable connection: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer add: 6: 65000:183396152 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 http keepalive handler +2025/08/19 11:16:38 [debug] 398217#398217: *5 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:38 [debug] 398217#398217: *5 recv: eof:1, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *5 recv: fd:6 0 of 1024 +2025/08/19 11:16:38 [info] 398217#398217: *5 client 127.0.0.1 closed keepalive connection +2025/08/19 11:16:38 [debug] 398217#398217: *5 close http connection: 6 +2025/08/19 11:16:38 [debug] 398217#398217: *5 event timer del: 6: 183396152 +2025/08/19 11:16:38 [debug] 398217#398217: *5 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26A90A0 +2025/08/19 11:16:38 [debug] 398217#398217: *5 free: 000061F3F26A6840, unused: 120 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 1 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: -1 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 11:16:38 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 11:16:38 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *7 accept: 127.0.0.1:37252 fd:6 +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer add: 6: 60000:183391184 +2025/08/19 11:16:38 [debug] 398217#398217: *7 reusable connection: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 31 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http wait request handler +2025/08/19 11:16:38 [debug] 398217#398217: *7 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:38 [debug] 398217#398217: *7 recv: eof:0, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 recv: fd:6 676 of 1024 +2025/08/19 11:16:38 [debug] 398217#398217: *7 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http process request line +2025/08/19 11:16:38 [debug] 398217#398217: *7 http request line: "DELETE /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http uri: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http args: "" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http exten: "" +2025/08/19 11:16:38 [debug] 398217#398217: *7 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http process request header line +2025/08/19 11:16:38 [debug] 398217#398217: *7 http header: "Host: localhost:9001" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http header: "User-Agent: curl/8.15.0" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http header: "Accept: */*" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http header: "Authorization: Nostr ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwKICAia2luZCI6IDI0MjQyLAogICJjb250ZW50IjogIkRlbGV0ZSB3aXRoIHdyb25nIHB1YmtleSIsCiAgImNyZWF0ZWRfYXQiOiAxNzU1NjE2NTk4LAogICJ0YWdzIjogWwogICAgWyJ0IiwgImRlbGV0ZSJdLAogICAgWyJ4IiwgIjcwOGQwZTgyMjZlYzE3YjA1ODU0MTdjMGVjOTM1MmNlNWY1MmMzODIwYzkwNGI3MDY2ZmUyMGIwMGYyZDljZmUiXSwKICAgIFsiZXhwaXJhdGlvbiIsICIxNzU1NjIwMTk4Il0KICBdLAogICJzaWciOiAicGxhY2Vob2xkZXJfc2lnbmF0dXJlIgp9Cg==" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http header done +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer del: 6: 183391184 +2025/08/19 11:16:38 [debug] 398217#398217: *7 generic phase: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 rewrite phase: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 test location: "/health" +2025/08/19 11:16:38 [debug] 398217#398217: *7 test location: "/debug/list" +2025/08/19 11:16:38 [debug] 398217#398217: *7 test location: "/" +2025/08/19 11:16:38 [debug] 398217#398217: *7 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:38 [debug] 398217#398217: *7 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http cl:-1 max:104857600 +2025/08/19 11:16:38 [debug] 398217#398217: *7 rewrite phase: 3 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script value: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script not equal +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script not equal: no +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script if +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script if: false +2025/08/19 11:16:38 [debug] 398217#398217: *7 post rewrite phase: 4 +2025/08/19 11:16:38 [debug] 398217#398217: *7 generic phase: 5 +2025/08/19 11:16:38 [debug] 398217#398217: *7 generic phase: 6 +2025/08/19 11:16:38 [debug] 398217#398217: *7 generic phase: 7 +2025/08/19 11:16:38 [debug] 398217#398217: *7 access phase: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *7 access phase: 9 +2025/08/19 11:16:38 [debug] 398217#398217: *7 access phase: 10 +2025/08/19 11:16:38 [debug] 398217#398217: *7 post access phase: 11 +2025/08/19 11:16:38 [debug] 398217#398217: *7 generic phase: 12 +2025/08/19 11:16:38 [debug] 398217#398217: *7 generic phase: 13 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http init upstream, client timer: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "QUERY_STRING" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "QUERY_STRING: " +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "REQUEST_METHOD" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "REQUEST_METHOD: DELETE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "CONTENT_TYPE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "CONTENT_TYPE: " +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "CONTENT_LENGTH" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "CONTENT_LENGTH: " +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SCRIPT_NAME" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SCRIPT_NAME: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "REQUEST_URI" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "REQUEST_URI: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "DOCUMENT_URI" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "DOCUMENT_URI: /708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "DOCUMENT_ROOT" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SERVER_PROTOCOL" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "REQUEST_SCHEME" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "http" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "GATEWAY_INTERFACE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "CGI/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SERVER_SOFTWARE" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "nginx/" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "1.18.0" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "REMOTE_ADDR" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "REMOTE_PORT" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "37252" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "REMOTE_PORT: 37252" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SERVER_ADDR" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SERVER_PORT" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "9001" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SERVER_NAME" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "localhost" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "REDIRECT_STATUS" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "200" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "SCRIPT_FILENAME" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script var: "./blobs" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http script copy: "/ginxsom.fcgi" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 11:16:38 [debug] 398217#398217: *7 fastcgi param: "HTTP_AUTHORIZATION: Nostr ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwKICAia2luZCI6IDI0MjQyLAogICJjb250ZW50IjogIkRlbGV0ZSB3aXRoIHdyb25nIHB1YmtleSIsCiAgImNyZWF0ZWRfYXQiOiAxNzU1NjE2NTk4LAogICJ0YWdzIjogWwogICAgWyJ0IiwgImRlbGV0ZSJdLAogICAgWyJ4IiwgIjcwOGQwZTgyMjZlYzE3YjA1ODU0MTdjMGVjOTM1MmNlNWY1MmMzODIwYzkwNGI3MDY2ZmUyMGIwMGYyZDljZmUiXSwKICAgIFsiZXhwaXJhdGlvbiIsICIxNzU1NjIwMTk4Il0KICBdLAogICJzaWciOiAicGxhY2Vob2xkZXJfc2lnbmF0dXJlIgp9Cg==" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http cleanup add: 000061F3F26BCCF0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 get rr peer, try: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 stream socket 10 +2025/08/19 11:16:38 [debug] 398217#398217: *7 epoll add connection: fd:10 ev:80002005 +2025/08/19 11:16:38 [debug] 398217#398217: *7 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #8 +2025/08/19 11:16:38 [debug] 398217#398217: *7 connected +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream connect: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream send request +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream send request body +2025/08/19 11:16:38 [debug] 398217#398217: *7 chain writer buf fl:0 s:1232 +2025/08/19 11:16:38 [debug] 398217#398217: *7 chain writer in: 000061F3F26BCD30 +2025/08/19 11:16:38 [debug] 398217#398217: *7 writev: 1232 of 1232 +2025/08/19 11:16:38 [debug] 398217#398217: *7 chain writer out: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer add: 10: 60000:183391184 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http finalize request: -4, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:2 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http request count:2 blk:0 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http run request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream check client, write event:1, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C9 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream dummy handler +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 2 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C9 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream request: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream process header +2025/08/19 11:16:38 [debug] 398217#398217: *7 malloc: 000061F3F26B0140:4096 +2025/08/19 11:16:38 [debug] 398217#398217: *7 posix_memalign: 000061F3F26B1150:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *7 recv: eof:1, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 recv: fd:10 1256 of 4096 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 06 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 04 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: C3 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 05 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record length: 1219 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: METHOD=DELETE, URI=/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: DELETE request - extracted SHA256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: handle_delete_request called with sha256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "LOG: [2025-08-19 11:16:38] DELETE /delete - Auth: pending - Status: 0" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: Authenticating request - method: delete, hash: 708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: Base64 event from header: ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAy..." +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: " "id": "placeholder_id"," +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: " "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f..." +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "DEBUG: Nostr event validation failed: -31 (Event has invalid ID)" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header: "Content-Type: application/json" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi parser: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi header done +2025/08/19 11:16:38 [debug] 398217#398217: *7 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 15:16:38 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=DELETE, URI=/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: DELETE request - extracted SHA256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: handle_delete_request called with sha256=708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +LOG: [2025-08-19 11:16:38] DELETE /delete - Auth: pending - Status: 0 +DEBUG: Authenticating request - method: delete, hash: 708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe +DEBUG: Base64 event from header: ewogICJpZCI6ICJwbGFjZWhvbGRlcl9pZCIsCiAgInB1YmtleSI6ICI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAy... +DEBUG: Parsed authorization header, extracted JSON: { + "id": "placeholder_id", + "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f... +DEBUG: Nostr event validation failed: -31 (Event has invalid ID) + +2025/08/19 11:16:38 [debug] 398217#398217: *7 write new buf t:1 f:0 000061F3F26B1908, pos 000061F3F26B1908, size: 1082 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http write filter: l:0 f:0 s:1082 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http cacheable: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream process upstream +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe read upstream: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe preread: 289 +2025/08/19 11:16:38 [debug] 398217#398217: *7 readv: eof:1, avail:0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 readv: 1, last:2840 +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe recv chain: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe buf free s:0 t:1 f:0 000061F3F26B0140, pos 000061F3F26B0507, size: 289 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe length: -1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 input buf #0 000061F3F26B0507 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 06 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record length: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi closed stdout +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 03 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 01 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 08 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record byte: 00 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi record length: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http fastcgi sent end request +2025/08/19 11:16:38 [debug] 398217#398217: *7 input buf 000061F3F26B0507 260 +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe write downstream: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe write downstream flush in +2025/08/19 11:16:38 [debug] 398217#398217: *7 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 000061F3F26B1E70 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http chunk: 260 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write old buf t:1 f:0 000061F3F26B1908, pos 000061F3F26B1908, size: 1082 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write new buf t:1 f:0 000061F3F26B1FC8, pos 000061F3F26B1FC8, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write new buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0507, size: 260 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http write filter: l:0 f:0 s:1349 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 pipe write downstream done +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer: 10, old: 183391184, new: 183391186 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream exit: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *7 finalize http upstream request: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 finalize http fastcgi request +2025/08/19 11:16:38 [debug] 398217#398217: *7 free rr peer 1 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 close http upstream connection: 10 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F268FF20, unused: 48 +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer del: 10: 183391184 +2025/08/19 11:16:38 [debug] 398217#398217: *7 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http upstream temp fd: -1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http output filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http copy filter: "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http postpone filter "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" 00007FFE4490F9F0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http chunk: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write old buf t:1 f:0 000061F3F26B1908, pos 000061F3F26B1908, size: 1082 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write old buf t:1 f:0 000061F3F26B1FC8, pos 000061F3F26B1FC8, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write old buf t:1 f:0 000061F3F26B0140, pos 000061F3F26B0507, size: 260 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http write filter: l:1 f:0 s:1354 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http write filter limit 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 writev: 1354 of 1354 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http write filter 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http copy filter: 0 "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" +2025/08/19 11:16:38 [debug] 398217#398217: *7 http finalize request: 0, "/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe?" a:1, c:1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 set http keepalive handler +2025/08/19 11:16:38 [debug] 398217#398217: *7 http close request +2025/08/19 11:16:38 [debug] 398217#398217: *7 http log handler +2025/08/19 11:16:38 [debug] 398217#398217: *7 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26B0140 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26C5A20, unused: 8 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26BBD90, unused: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26B1150, unused: 32 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26B2160, unused: 3877 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26A90A0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 hc free: 0000000000000000 +2025/08/19 11:16:38 [debug] 398217#398217: *7 hc busy: 0000000000000000 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 tcp_nodelay +2025/08/19 11:16:38 [debug] 398217#398217: *7 reusable connection: 1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer add: 6: 65000:183396186 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 0 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 11:16:38 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 http keepalive handler +2025/08/19 11:16:38 [debug] 398217#398217: *7 malloc: 000061F3F26A90A0:1024 +2025/08/19 11:16:38 [debug] 398217#398217: *7 recv: eof:1, avail:-1 +2025/08/19 11:16:38 [debug] 398217#398217: *7 recv: fd:6 0 of 1024 +2025/08/19 11:16:38 [info] 398217#398217: *7 client 127.0.0.1 closed keepalive connection +2025/08/19 11:16:38 [debug] 398217#398217: *7 close http connection: 6 +2025/08/19 11:16:38 [debug] 398217#398217: *7 event timer del: 6: 183396186 +2025/08/19 11:16:38 [debug] 398217#398217: *7 reusable connection: 0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26A90A0 +2025/08/19 11:16:38 [debug] 398217#398217: *7 free: 000061F3F26A6840, unused: 120 +2025/08/19 11:16:38 [debug] 398217#398217: timer delta: 2 +2025/08/19 11:16:38 [debug] 398217#398217: worker cycle +2025/08/19 11:16:38 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:33:51 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:33:51 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *9 accept: 127.0.0.1:57030 fd:6 +2025/08/19 13:33:51 [debug] 398217#398217: *9 event timer add: 6: 60000:191624727 +2025/08/19 13:33:51 [debug] 398217#398217: *9 reusable connection: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *9 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 8233539 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http wait request handler +2025/08/19 13:33:51 [debug] 398217#398217: *9 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *9 recv: eof:0, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *9 recv: fd:6 84 of 1024 +2025/08/19 13:33:51 [debug] 398217#398217: *9 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http process request line +2025/08/19 13:33:51 [debug] 398217#398217: *9 http request line: "GET /health HTTP/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http uri: "/health" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http args: "" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http exten: "" +2025/08/19 13:33:51 [debug] 398217#398217: *9 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http process request header line +2025/08/19 13:33:51 [debug] 398217#398217: *9 http header: "Host: localhost:9001" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http header: "Accept: */*" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http header done +2025/08/19 13:33:51 [debug] 398217#398217: *9 event timer del: 6: 191624727 +2025/08/19 13:33:51 [debug] 398217#398217: *9 generic phase: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 rewrite phase: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *9 test location: "/health" +2025/08/19 13:33:51 [debug] 398217#398217: *9 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *9 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:33:51 [debug] 398217#398217: *9 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *9 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *9 using configuration "/health" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http cl:-1 max:104857600 +2025/08/19 13:33:51 [debug] 398217#398217: *9 rewrite phase: 3 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http set discard body +2025/08/19 13:33:51 [debug] 398217#398217: *9 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:33:51 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 13:33:51 [debug] 398217#398217: *9 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http write filter: l:0 f:0 s:196 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http output filter "/health?" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http copy filter: "/health?" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http postpone filter "/health?" 00007FFE4490F940 +2025/08/19 13:33:51 [debug] 398217#398217: *9 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 write new buf t:0 f:0 0000000000000000, pos 000061F3F26E3B32, size: 3 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http write filter: l:1 f:0 s:199 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http write filter limit 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 writev: 199 of 199 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http write filter 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http copy filter: 0 "/health?" +2025/08/19 13:33:51 [debug] 398217#398217: *9 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 13:33:51 [debug] 398217#398217: *9 set http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *9 http close request +2025/08/19 13:33:51 [debug] 398217#398217: *9 http log handler +2025/08/19 13:33:51 [debug] 398217#398217: *9 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 free: 000061F3F26BBD90, unused: 2736 +2025/08/19 13:33:51 [debug] 398217#398217: *9 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 hc free: 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *9 hc busy: 0000000000000000 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 tcp_nodelay +2025/08/19 13:33:51 [debug] 398217#398217: *9 reusable connection: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *9 event timer add: 6: 65000:191629727 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *9 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *9 recv: eof:1, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *9 recv: fd:6 0 of 1024 +2025/08/19 13:33:51 [info] 398217#398217: *9 client 127.0.0.1 closed keepalive connection +2025/08/19 13:33:51 [debug] 398217#398217: *9 close http connection: 6 +2025/08/19 13:33:51 [debug] 398217#398217: *9 event timer del: 6: 191629727 +2025/08/19 13:33:51 [debug] 398217#398217: *9 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: *9 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:33:51 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:33:51 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *10 accept: 127.0.0.1:57034 fd:6 +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer add: 6: 60000:191625015 +2025/08/19 13:33:51 [debug] 398217#398217: *10 reusable connection: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 287 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http wait request handler +2025/08/19 13:33:51 [debug] 398217#398217: *10 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: eof:0, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: fd:6 1024 of 1024 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: avail:112 +2025/08/19 13:33:51 [debug] 398217#398217: *10 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http process request line +2025/08/19 13:33:51 [debug] 398217#398217: *10 http request line: "PUT /upload HTTP/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http uri: "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http args: "" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http exten: "" +2025/08/19 13:33:51 [debug] 398217#398217: *10 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http process request header line +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "Host: localhost:9001" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "Accept: */*" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzZTcwYzgzNDZkNmEwOTY1ZTY4MTI4NzBmZWJiMGZiNDZjZjY1Y2M0MzI5YjgwMDQ0YTM3ZDk2ODMyNGRlOTY3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjQ4MzEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZmFkYjBkNDU4ODUwNjM5Mzg1ODRjMGIyMzczYmM4MTU0M2VjYzRjODcwM2IzNzZiNmRlYTRjZjdiZTQxMDE3Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyODQzMSJdXSwiY29udGVudCI6IiIsInNpZyI6Ijc4ODRkODRiYTIyNDAzZjMxODJjYjUwMGYyZjUyOTAwZmJhNWFiODM5OTVmMGYyOGEyY2RjZmVhZTgyMzE2MGM3YjllYzBjYWNmYzgyMmNhM2E0MjFmNTcwNmFmOGQzMzY3ZDVmMzJlNmFjMWZlY2M4OTZkZDgwZTI5N2Q1OTgwIn0=" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "Content-Type: text/plain" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "Content-Disposition: attachment; filename="test_blob_1755624831.txt"" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header: "Content-Length: 296" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http header done +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer del: 6: 191625015 +2025/08/19 13:33:51 [debug] 398217#398217: *10 generic phase: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 rewrite phase: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 test location: "/health" +2025/08/19 13:33:51 [debug] 398217#398217: *10 test location: "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *10 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:33:51 [debug] 398217#398217: *10 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *10 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *10 using configuration "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http cl:296 max:104857600 +2025/08/19 13:33:51 [debug] 398217#398217: *10 rewrite phase: 3 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "PUT" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script regex: "^(PUT)$" +2025/08/19 13:33:51 [notice] 398217#398217: *10 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script if +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script if: false +2025/08/19 13:33:51 [debug] 398217#398217: *10 post rewrite phase: 4 +2025/08/19 13:33:51 [debug] 398217#398217: *10 generic phase: 5 +2025/08/19 13:33:51 [debug] 398217#398217: *10 generic phase: 6 +2025/08/19 13:33:51 [debug] 398217#398217: *10 generic phase: 7 +2025/08/19 13:33:51 [debug] 398217#398217: *10 access phase: 8 +2025/08/19 13:33:51 [debug] 398217#398217: *10 access phase: 9 +2025/08/19 13:33:51 [debug] 398217#398217: *10 access phase: 10 +2025/08/19 13:33:51 [debug] 398217#398217: *10 post access phase: 11 +2025/08/19 13:33:51 [debug] 398217#398217: *10 generic phase: 12 +2025/08/19 13:33:51 [debug] 398217#398217: *10 generic phase: 13 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http client request body preread 184 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http request body content length filter +2025/08/19 13:33:51 [debug] 398217#398217: *10 http body new buf t:1 f:0 000061F3F26A93E8, pos 000061F3F26A93E8, size: 184 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http read client request body +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: eof:0, avail:112 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: fd:6 112 of 112 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: avail:0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http client request body recv 112 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http body new buf t:1 f:0 000061F3F26BC820, pos 000061F3F26BC820, size: 112 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http client request body rest 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http init upstream, client timer: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 13:33:51 [debug] 398217#398217: *10 posix_memalign: 000061F3F26B0140:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "QUERY_STRING" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "QUERY_STRING: " +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "REQUEST_METHOD" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "PUT" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "CONTENT_TYPE" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "text/plain" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "CONTENT_LENGTH" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "296" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SCRIPT_NAME" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "REQUEST_URI" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "DOCUMENT_URI" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "DOCUMENT_ROOT" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "./blobs" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SERVER_PROTOCOL" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "HTTP/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "REQUEST_SCHEME" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "http" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "GATEWAY_INTERFACE" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "CGI/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SERVER_SOFTWARE" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "nginx/" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "1.18.0" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "REMOTE_ADDR" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "127.0.0.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "REMOTE_PORT" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "57034" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "REMOTE_PORT: 57034" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SERVER_ADDR" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "127.0.0.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SERVER_PORT" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "9001" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SERVER_NAME" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "localhost" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "REDIRECT_STATUS" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "200" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "SCRIPT_FILENAME" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script var: "./blobs" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http script copy: "/ginxsom.fcgi" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzZTcwYzgzNDZkNmEwOTY1ZTY4MTI4NzBmZWJiMGZiNDZjZjY1Y2M0MzI5YjgwMDQ0YTM3ZDk2ODMyNGRlOTY3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjQ4MzEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZmFkYjBkNDU4ODUwNjM5Mzg1ODRjMGIyMzczYmM4MTU0M2VjYzRjODcwM2IzNzZiNmRlYTRjZjdiZTQxMDE3Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyODQzMSJdXSwiY29udGVudCI6IiIsInNpZyI6Ijc4ODRkODRiYTIyNDAzZjMxODJjYjUwMGYyZjUyOTAwZmJhNWFiODM5OTVmMGYyOGEyY2RjZmVhZTgyMzE2MGM3YjllYzBjYWNmYzgyMmNhM2E0MjFmNTcwNmFmOGQzMzY3ZDVmMzJlNmFjMWZlY2M4OTZkZDgwZTI5N2Q1OTgwIn0=" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755624831.txt"" +2025/08/19 13:33:51 [debug] 398217#398217: *10 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http cleanup add: 000061F3F26BCB70 +2025/08/19 13:33:51 [debug] 398217#398217: *10 get rr peer, try: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 stream socket 10 +2025/08/19 13:33:51 [debug] 398217#398217: *10 epoll add connection: fd:10 ev:80002005 +2025/08/19 13:33:51 [debug] 398217#398217: *10 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #11 +2025/08/19 13:33:51 [debug] 398217#398217: *10 connected +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream connect: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream send request +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream send request body +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer buf fl:0 s:1304 +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer buf fl:0 s:184 +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer buf fl:0 s:8 +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer buf fl:0 s:112 +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer buf fl:0 s:8 +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer in: 000061F3F26BCC00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 writev: 1616 of 1616 +2025/08/19 13:33:51 [debug] 398217#398217: *10 chain writer out: 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer add: 10: 60000:191625016 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http request count:2 blk:0 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http run request: "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream check client, write event:1, "/upload" +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C8 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream request: "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream dummy handler +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 59999 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C8 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream request: "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream process header +2025/08/19 13:33:51 [debug] 398217#398217: *10 malloc: 000061F3F26B1150:4096 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: eof:1, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: fd:10 1664 of 4096 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 01 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 06 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 01 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 06 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 5D +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 03 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record length: 1629 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "LOG: [2025-08-19 13:33:51] PUT /upload - Auth: pending - Status: 0" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzZTcwYzgzNDZkNmEwOTY1ZTY4MTI4NzBmZWJiMGZiNDZjZjY1Y2M0MzI5YjgwMDQ0YTM3ZDk2ODMyNGRlOTY3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjQ4MzEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZmFkYjBkNDU4ODUwNjM5Mzg1ODRjMGIyMzczYmM4MTU0M2VjYzRjODcwM2IzNzZiNmRlYTRjZjdiZTQxMDE3Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyODQzMSJdXSwiY29udGVudCI6IiIsInNpZyI6Ijc4ODRkODRiYTIyNDAzZjMxODJjYjUwMGYyZjUyOTAwZmJhNWFiODM5OTVmMGYyOGEyY2RjZmVhZTgyMzE2MGM3YjllYzBjYWNmYzgyMmNhM2E0MjFmNTcwNmFmOGQzMzY3ZDVmMzJlNmFjMWZlY2M4OTZkZDgwZTI5N2Q1OTgwIn0=" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: Authenticating request - method: PUT, hash: null" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiIzZTcwYzgzNDZkNmEwOTY1ZTY4MTI4NzBmZWJiMGZiNDZjZjY1Y2M0MzI5YjgwMDQ0YTM3ZDk2..." +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"3e70c8346d6a0965e6812870febb0fb46cf65cc4329b80044a37d968324de967","pubkey":"79be..." +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "DEBUG: Nostr event validation failed: -32 (Event has invalid public key)" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header: "Content-Type: application/json" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi parser: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi header done +2025/08/19 13:33:51 [debug] 398217#398217: *10 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *10 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:33:51 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 13:33:51] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzZTcwYzgzNDZkNmEwOTY1ZTY4MTI4NzBmZWJiMGZiNDZjZjY1Y2M0MzI5YjgwMDQ0YTM3ZDk2ODMyNGRlOTY3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjQ4MzEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZmFkYjBkNDU4ODUwNjM5Mzg1ODRjMGIyMzczYmM4MTU0M2VjYzRjODcwM2IzNzZiNmRlYTRjZjdiZTQxMDE3Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyODQzMSJdXSwiY29udGVudCI6IiIsInNpZyI6Ijc4ODRkODRiYTIyNDAzZjMxODJjYjUwMGYyZjUyOTAwZmJhNWFiODM5OTVmMGYyOGEyY2RjZmVhZTgyMzE2MGM3YjllYzBjYWNmYzgyMmNhM2E0MjFmNTcwNmFmOGQzMzY3ZDVmMzJlNmFjMWZlY2M4OTZkZDgwZTI5N2Q1OTgwIn0= +DEBUG: Authenticating request - method: PUT, hash: null +DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiIzZTcwYzgzNDZkNmEwOTY1ZTY4MTI4NzBmZWJiMGZiNDZjZjY1Y2M0MzI5YjgwMDQ0YTM3ZDk2... +DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"3e70c8346d6a0965e6812870febb0fb46cf65cc4329b80044a37d968324de967","pubkey":"79be... +DEBUG: Nostr event validation failed: -32 (Event has invalid public key) + +2025/08/19 13:33:51 [debug] 398217#398217: *10 write new buf t:1 f:0 000061F3F26B2180, pos 000061F3F26B2180, size: 1493 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter: l:0 f:0 s:1493 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter limit 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 writev: 1493 of 1493 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http cacheable: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream process upstream +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe read upstream: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe preread: 284 +2025/08/19 13:33:51 [debug] 398217#398217: *10 readv: eof:1, avail:0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 readv: 1, last:2432 +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe recv chain: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe length: -1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 input buf #0 000061F3F26B16B4 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 01 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 06 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 01 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record length: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi closed stdout +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 01 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 03 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 01 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 08 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record byte: 00 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi record length: 8 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http fastcgi sent end request +2025/08/19 13:33:51 [debug] 398217#398217: *10 input buf 000061F3F26B16B4 257 +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe write downstream: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe write downstream flush in +2025/08/19 13:33:51 [debug] 398217#398217: *10 http output filter "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http copy filter: "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http postpone filter "/upload?" 000061F3F26BCBE0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http chunk: 257 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write new buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write new buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter: l:0 f:0 s:264 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http copy filter: 0 "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 pipe write downstream done +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer: 10, old: 191625016, new: 191625017 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream exit: 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *10 finalize http upstream request: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 finalize http fastcgi request +2025/08/19 13:33:51 [debug] 398217#398217: *10 free rr peer 1 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 close http upstream connection: 10 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F268FF20, unused: 48 +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer del: 10: 191625016 +2025/08/19 13:33:51 [debug] 398217#398217: *10 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http upstream temp fd: -1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http output filter "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http copy filter: "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http postpone filter "/upload?" 00007FFE4490F9F0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http chunk: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write old buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write old buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter: l:1 f:0 s:269 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter limit 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 writev: 269 of 269 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http write filter 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http copy filter: 0 "/upload?" +2025/08/19 13:33:51 [debug] 398217#398217: *10 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 set http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *10 http close request +2025/08/19 13:33:51 [debug] 398217#398217: *10 http log handler +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26B1150 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26C5A20, unused: 3 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26BBD90, unused: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26B0140, unused: 54 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26B2160, unused: 2202 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 hc free: 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *10 hc busy: 0000000000000000 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 tcp_nodelay +2025/08/19 13:33:51 [debug] 398217#398217: *10 reusable connection: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer add: 6: 65000:191630017 +2025/08/19 13:33:51 [debug] 398217#398217: *10 post event 000061F3F26F7760 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:33:51 [debug] 398217#398217: posted event 000061F3F26F7760 +2025/08/19 13:33:51 [debug] 398217#398217: *10 delete posted event 000061F3F26F7760 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *10 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: eof:0, avail:0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *10 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: eof:1, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *10 recv: fd:6 0 of 1024 +2025/08/19 13:33:51 [info] 398217#398217: *10 client 127.0.0.1 closed keepalive connection +2025/08/19 13:33:51 [debug] 398217#398217: *10 close http connection: 6 +2025/08/19 13:33:51 [debug] 398217#398217: *10 event timer del: 6: 191630017 +2025/08/19 13:33:51 [debug] 398217#398217: *10 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: *10 free: 000061F3F26A6840, unused: 120 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 2 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:33:51 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:33:51 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *12 accept: 127.0.0.1:57048 fd:6 +2025/08/19 13:33:51 [debug] 398217#398217: *12 event timer add: 6: 60000:191625031 +2025/08/19 13:33:51 [debug] 398217#398217: *12 reusable connection: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 12 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http wait request handler +2025/08/19 13:33:51 [debug] 398217#398217: *12 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *12 recv: eof:0, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 recv: fd:6 142 of 1024 +2025/08/19 13:33:51 [debug] 398217#398217: *12 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http process request line +2025/08/19 13:33:51 [debug] 398217#398217: *12 http request line: "GET /ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017 HTTP/1.1" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http uri: "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http args: "" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http exten: "" +2025/08/19 13:33:51 [debug] 398217#398217: *12 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http process request header line +2025/08/19 13:33:51 [debug] 398217#398217: *12 http header: "Host: localhost:9001" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http header: "Accept: */*" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http header done +2025/08/19 13:33:51 [debug] 398217#398217: *12 event timer del: 6: 191625031 +2025/08/19 13:33:51 [debug] 398217#398217: *12 generic phase: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 rewrite phase: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 test location: "/health" +2025/08/19 13:33:51 [debug] 398217#398217: *12 test location: "/debug/list" +2025/08/19 13:33:51 [debug] 398217#398217: *12 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *12 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http cl:-1 max:104857600 +2025/08/19 13:33:51 [debug] 398217#398217: *12 rewrite phase: 3 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http script var +2025/08/19 13:33:51 [debug] 398217#398217: *12 http script var: "GET" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http script value: "DELETE" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http script not equal +2025/08/19 13:33:51 [debug] 398217#398217: *12 http script if +2025/08/19 13:33:51 [debug] 398217#398217: *12 http finalize request: 404, "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" a:1, c:1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http special response: 404, "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http set discard body +2025/08/19 13:33:51 [debug] 398217#398217: *12 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:33:51 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 13:33:51 [debug] 398217#398217: *12 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http write filter: l:0 f:0 s:164 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http output filter "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http copy filter: "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http postpone filter "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" 000061F3F26BC300 +2025/08/19 13:33:51 [debug] 398217#398217: *12 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4580, size: 100 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4C80, size: 62 file: 0, size: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http write filter: l:1 f:0 s:326 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http write filter limit 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 writev: 326 of 326 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http write filter 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http copy filter: 0 "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" +2025/08/19 13:33:51 [debug] 398217#398217: *12 http finalize request: 0, "/ffadb0d45885063938584c0b2373bc81543ecc4c8703b376b6dea4cf7be41017?" a:1, c:1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 set http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *12 http close request +2025/08/19 13:33:51 [debug] 398217#398217: *12 http log handler +2025/08/19 13:33:51 [debug] 398217#398217: *12 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 free: 000061F3F26BBD90, unused: 2456 +2025/08/19 13:33:51 [debug] 398217#398217: *12 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 hc free: 0000000000000000 +2025/08/19 13:33:51 [debug] 398217#398217: *12 hc busy: 0000000000000000 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 tcp_nodelay +2025/08/19 13:33:51 [debug] 398217#398217: *12 reusable connection: 1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 event timer add: 6: 65000:191630031 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:33:51 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 http keepalive handler +2025/08/19 13:33:51 [debug] 398217#398217: *12 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:33:51 [debug] 398217#398217: *12 recv: eof:1, avail:-1 +2025/08/19 13:33:51 [debug] 398217#398217: *12 recv: fd:6 0 of 1024 +2025/08/19 13:33:51 [info] 398217#398217: *12 client 127.0.0.1 closed keepalive connection +2025/08/19 13:33:51 [debug] 398217#398217: *12 close http connection: 6 +2025/08/19 13:33:51 [debug] 398217#398217: *12 event timer del: 6: 191630031 +2025/08/19 13:33:51 [debug] 398217#398217: *12 reusable connection: 0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 free: 000061F3F26A90A0 +2025/08/19 13:33:51 [debug] 398217#398217: *12 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:33:51 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:33:51 [debug] 398217#398217: worker cycle +2025/08/19 13:33:51 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:52:51 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:52:51 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:52:51 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:52:51 [debug] 398217#398217: *13 accept: 127.0.0.1:41472 fd:6 +2025/08/19 13:52:51 [debug] 398217#398217: *13 event timer add: 6: 60000:192765037 +2025/08/19 13:52:51 [debug] 398217#398217: *13 reusable connection: 1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:52:51 [debug] 398217#398217: timer delta: 1140005 +2025/08/19 13:52:51 [debug] 398217#398217: worker cycle +2025/08/19 13:52:51 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:52:51 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http wait request handler +2025/08/19 13:52:51 [debug] 398217#398217: *13 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:51 [debug] 398217#398217: *13 recv: eof:0, avail:-1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 recv: fd:6 84 of 1024 +2025/08/19 13:52:51 [debug] 398217#398217: *13 reusable connection: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http process request line +2025/08/19 13:52:51 [debug] 398217#398217: *13 http request line: "GET /health HTTP/1.1" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http uri: "/health" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http args: "" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http exten: "" +2025/08/19 13:52:51 [debug] 398217#398217: *13 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http process request header line +2025/08/19 13:52:51 [debug] 398217#398217: *13 http header: "Host: localhost:9001" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http header: "Accept: */*" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http header done +2025/08/19 13:52:51 [debug] 398217#398217: *13 event timer del: 6: 192765037 +2025/08/19 13:52:51 [debug] 398217#398217: *13 generic phase: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 rewrite phase: 1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 test location: "/health" +2025/08/19 13:52:51 [debug] 398217#398217: *13 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:52:51 [debug] 398217#398217: *13 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:52:51 [debug] 398217#398217: *13 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:52:51 [debug] 398217#398217: *13 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:52:51 [debug] 398217#398217: *13 using configuration "/health" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http cl:-1 max:104857600 +2025/08/19 13:52:51 [debug] 398217#398217: *13 rewrite phase: 3 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http set discard body +2025/08/19 13:52:51 [debug] 398217#398217: *13 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:52:51 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 13:52:51 [debug] 398217#398217: *13 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http write filter: l:0 f:0 s:196 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http output filter "/health?" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http copy filter: "/health?" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http postpone filter "/health?" 00007FFE4490F940 +2025/08/19 13:52:51 [debug] 398217#398217: *13 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 write new buf t:0 f:0 0000000000000000, pos 000061F3F26E3B32, size: 3 file: 0, size: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http write filter: l:1 f:0 s:199 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http write filter limit 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 writev: 199 of 199 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http write filter 0000000000000000 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http copy filter: 0 "/health?" +2025/08/19 13:52:51 [debug] 398217#398217: *13 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 set http keepalive handler +2025/08/19 13:52:51 [debug] 398217#398217: *13 http close request +2025/08/19 13:52:51 [debug] 398217#398217: *13 http log handler +2025/08/19 13:52:51 [debug] 398217#398217: *13 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 free: 000061F3F26BBD90, unused: 2736 +2025/08/19 13:52:51 [debug] 398217#398217: *13 free: 000061F3F26A90A0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 hc free: 0000000000000000 +2025/08/19 13:52:51 [debug] 398217#398217: *13 hc busy: 0000000000000000 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 tcp_nodelay +2025/08/19 13:52:51 [debug] 398217#398217: *13 reusable connection: 1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 event timer add: 6: 65000:192770037 +2025/08/19 13:52:51 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:52:51 [debug] 398217#398217: worker cycle +2025/08/19 13:52:51 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:52:51 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 http keepalive handler +2025/08/19 13:52:51 [debug] 398217#398217: *13 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:51 [debug] 398217#398217: *13 recv: eof:1, avail:-1 +2025/08/19 13:52:51 [debug] 398217#398217: *13 recv: fd:6 0 of 1024 +2025/08/19 13:52:51 [info] 398217#398217: *13 client 127.0.0.1 closed keepalive connection +2025/08/19 13:52:51 [debug] 398217#398217: *13 close http connection: 6 +2025/08/19 13:52:51 [debug] 398217#398217: *13 event timer del: 6: 192770037 +2025/08/19 13:52:51 [debug] 398217#398217: *13 reusable connection: 0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 free: 000061F3F26A90A0 +2025/08/19 13:52:51 [debug] 398217#398217: *13 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:52:51 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:52:51 [debug] 398217#398217: worker cycle +2025/08/19 13:52:51 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:52:52 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:52:52 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *14 accept: 127.0.0.1:41478 fd:6 +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer add: 6: 60000:192765251 +2025/08/19 13:52:52 [debug] 398217#398217: *14 reusable connection: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 213 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http wait request handler +2025/08/19 13:52:52 [debug] 398217#398217: *14 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: eof:0, avail:-1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: fd:6 1024 of 1024 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: avail:112 +2025/08/19 13:52:52 [debug] 398217#398217: *14 reusable connection: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http process request line +2025/08/19 13:52:52 [debug] 398217#398217: *14 http request line: "PUT /upload HTTP/1.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http uri: "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http args: "" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http exten: "" +2025/08/19 13:52:52 [debug] 398217#398217: *14 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http process request header line +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "Host: localhost:9001" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "Accept: */*" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlM2QxNzYzNDBkMzU1MDRjNTAzNjRkYzk1ODIzZmFkYzg0NDkxNWFkYzFiZGRiNzI2MzU5MGQ0ZjRiMzY3ZGI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjU5NzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4NzhhNjM4NDcxMjBiZTljMjk0OTg0NTk4OTE0NGEwYTE0NjBiNWY2NmEzMDBmZTA0ZDBjN2Y5ZmEzOTA2ZTc1Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTU3MSJdXSwiY29udGVudCI6IiIsInNpZyI6ImMxZTg2YmY4NmQ2YzkxMTc5ZGMyMjAxYTUxOTA1YzU1N2E4YTk3MGFkYmY1YjU2NWEwN2I4Nzk3OWIyNWZjYWM4M2EyMzY2ZjYyZmQ0MGJhNmJjYjU0MGNkNmFiMWNmZTdlOTk5MDAxMmQ2YTAyZTI0OTMwMjRjNmY5YzFiZTdiIn0=" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "Content-Type: text/plain" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "Content-Disposition: attachment; filename="test_blob_1755625971.txt"" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header: "Content-Length: 296" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http header done +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer del: 6: 192765251 +2025/08/19 13:52:52 [debug] 398217#398217: *14 generic phase: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 rewrite phase: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 test location: "/health" +2025/08/19 13:52:52 [debug] 398217#398217: *14 test location: "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:52:52 [debug] 398217#398217: *14 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:52:52 [debug] 398217#398217: *14 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:52:52 [debug] 398217#398217: *14 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:52:52 [debug] 398217#398217: *14 using configuration "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http cl:296 max:104857600 +2025/08/19 13:52:52 [debug] 398217#398217: *14 rewrite phase: 3 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "PUT" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script regex: "^(PUT)$" +2025/08/19 13:52:52 [notice] 398217#398217: *14 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script if +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script if: false +2025/08/19 13:52:52 [debug] 398217#398217: *14 post rewrite phase: 4 +2025/08/19 13:52:52 [debug] 398217#398217: *14 generic phase: 5 +2025/08/19 13:52:52 [debug] 398217#398217: *14 generic phase: 6 +2025/08/19 13:52:52 [debug] 398217#398217: *14 generic phase: 7 +2025/08/19 13:52:52 [debug] 398217#398217: *14 access phase: 8 +2025/08/19 13:52:52 [debug] 398217#398217: *14 access phase: 9 +2025/08/19 13:52:52 [debug] 398217#398217: *14 access phase: 10 +2025/08/19 13:52:52 [debug] 398217#398217: *14 post access phase: 11 +2025/08/19 13:52:52 [debug] 398217#398217: *14 generic phase: 12 +2025/08/19 13:52:52 [debug] 398217#398217: *14 generic phase: 13 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http client request body preread 184 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http request body content length filter +2025/08/19 13:52:52 [debug] 398217#398217: *14 http body new buf t:1 f:0 000061F3F26A93E8, pos 000061F3F26A93E8, size: 184 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http read client request body +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: eof:0, avail:112 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: fd:6 112 of 112 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: avail:0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http client request body recv 112 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http body new buf t:1 f:0 000061F3F26BC820, pos 000061F3F26BC820, size: 112 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http client request body rest 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http init upstream, client timer: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 13:52:52 [debug] 398217#398217: *14 posix_memalign: 000061F3F26B0140:4096 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "QUERY_STRING" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "QUERY_STRING: " +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "REQUEST_METHOD" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "PUT" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "CONTENT_TYPE" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "text/plain" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "CONTENT_LENGTH" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "296" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SCRIPT_NAME" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "REQUEST_URI" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "DOCUMENT_URI" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "DOCUMENT_ROOT" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "./blobs" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SERVER_PROTOCOL" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "HTTP/1.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "REQUEST_SCHEME" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "http" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "GATEWAY_INTERFACE" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "CGI/1.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SERVER_SOFTWARE" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "nginx/" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "1.18.0" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "REMOTE_ADDR" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "127.0.0.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "REMOTE_PORT" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "41478" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "REMOTE_PORT: 41478" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SERVER_ADDR" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "127.0.0.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SERVER_PORT" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "9001" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SERVER_NAME" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "localhost" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "REDIRECT_STATUS" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "200" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "SCRIPT_FILENAME" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script var: "./blobs" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http script copy: "/ginxsom.fcgi" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlM2QxNzYzNDBkMzU1MDRjNTAzNjRkYzk1ODIzZmFkYzg0NDkxNWFkYzFiZGRiNzI2MzU5MGQ0ZjRiMzY3ZGI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjU5NzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4NzhhNjM4NDcxMjBiZTljMjk0OTg0NTk4OTE0NGEwYTE0NjBiNWY2NmEzMDBmZTA0ZDBjN2Y5ZmEzOTA2ZTc1Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTU3MSJdXSwiY29udGVudCI6IiIsInNpZyI6ImMxZTg2YmY4NmQ2YzkxMTc5ZGMyMjAxYTUxOTA1YzU1N2E4YTk3MGFkYmY1YjU2NWEwN2I4Nzk3OWIyNWZjYWM4M2EyMzY2ZjYyZmQ0MGJhNmJjYjU0MGNkNmFiMWNmZTdlOTk5MDAxMmQ2YTAyZTI0OTMwMjRjNmY5YzFiZTdiIn0=" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755625971.txt"" +2025/08/19 13:52:52 [debug] 398217#398217: *14 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http cleanup add: 000061F3F26BCB70 +2025/08/19 13:52:52 [debug] 398217#398217: *14 get rr peer, try: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 stream socket 10 +2025/08/19 13:52:52 [debug] 398217#398217: *14 epoll add connection: fd:10 ev:80002005 +2025/08/19 13:52:52 [debug] 398217#398217: *14 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #15 +2025/08/19 13:52:52 [debug] 398217#398217: *14 connected +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream connect: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream send request +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream send request body +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer buf fl:0 s:1304 +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer buf fl:0 s:184 +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer buf fl:0 s:8 +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer buf fl:0 s:112 +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer buf fl:0 s:8 +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer in: 000061F3F26BCC00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 writev: 1616 of 1616 +2025/08/19 13:52:52 [debug] 398217#398217: *14 chain writer out: 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer add: 10: 60000:192765252 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http request count:2 blk:0 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http run request: "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream check client, write event:1, "/upload" +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C9 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream request: "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream dummy handler +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: 59999 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C9 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream request: "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream process header +2025/08/19 13:52:52 [debug] 398217#398217: *14 malloc: 000061F3F26B1150:4096 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: eof:1, avail:-1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: fd:10 1664 of 4096 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 01 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 06 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 01 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 06 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 5D +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 03 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record length: 1629 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "LOG: [2025-08-19 13:52:52] PUT /upload - Auth: pending - Status: 0" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlM2QxNzYzNDBkMzU1MDRjNTAzNjRkYzk1ODIzZmFkYzg0NDkxNWFkYzFiZGRiNzI2MzU5MGQ0ZjRiMzY3ZGI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjU5NzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4NzhhNjM4NDcxMjBiZTljMjk0OTg0NTk4OTE0NGEwYTE0NjBiNWY2NmEzMDBmZTA0ZDBjN2Y5ZmEzOTA2ZTc1Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTU3MSJdXSwiY29udGVudCI6IiIsInNpZyI6ImMxZTg2YmY4NmQ2YzkxMTc5ZGMyMjAxYTUxOTA1YzU1N2E4YTk3MGFkYmY1YjU2NWEwN2I4Nzk3OWIyNWZjYWM4M2EyMzY2ZjYyZmQ0MGJhNmJjYjU0MGNkNmFiMWNmZTdlOTk5MDAxMmQ2YTAyZTI0OTMwMjRjNmY5YzFiZTdiIn0=" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: Authenticating request - method: PUT, hash: null" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiJlM2QxNzYzNDBkMzU1MDRjNTAzNjRkYzk1ODIzZmFkYzg0NDkxNWFkYzFiZGRiNzI2MzU5MGQ0..." +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"e3d176340d35504c50364dc95823fadc844915adc1bddb7263590d4f4b367db4","pubkey":"79be..." +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "DEBUG: Nostr event validation failed: -32 (Event has invalid public key)" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header: "Content-Type: application/json" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi parser: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi header done +2025/08/19 13:52:52 [debug] 398217#398217: *14 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *14 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:52:52 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 13:52:52] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlM2QxNzYzNDBkMzU1MDRjNTAzNjRkYzk1ODIzZmFkYzg0NDkxNWFkYzFiZGRiNzI2MzU5MGQ0ZjRiMzY3ZGI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjU5NzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4NzhhNjM4NDcxMjBiZTljMjk0OTg0NTk4OTE0NGEwYTE0NjBiNWY2NmEzMDBmZTA0ZDBjN2Y5ZmEzOTA2ZTc1Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTU3MSJdXSwiY29udGVudCI6IiIsInNpZyI6ImMxZTg2YmY4NmQ2YzkxMTc5ZGMyMjAxYTUxOTA1YzU1N2E4YTk3MGFkYmY1YjU2NWEwN2I4Nzk3OWIyNWZjYWM4M2EyMzY2ZjYyZmQ0MGJhNmJjYjU0MGNkNmFiMWNmZTdlOTk5MDAxMmQ2YTAyZTI0OTMwMjRjNmY5YzFiZTdiIn0= +DEBUG: Authenticating request - method: PUT, hash: null +DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiJlM2QxNzYzNDBkMzU1MDRjNTAzNjRkYzk1ODIzZmFkYzg0NDkxNWFkYzFiZGRiNzI2MzU5MGQ0... +DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"e3d176340d35504c50364dc95823fadc844915adc1bddb7263590d4f4b367db4","pubkey":"79be... +DEBUG: Nostr event validation failed: -32 (Event has invalid public key) + +2025/08/19 13:52:52 [debug] 398217#398217: *14 write new buf t:1 f:0 000061F3F26B2180, pos 000061F3F26B2180, size: 1493 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter: l:0 f:0 s:1493 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter limit 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 writev: 1493 of 1493 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http cacheable: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream process upstream +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe read upstream: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe preread: 284 +2025/08/19 13:52:52 [debug] 398217#398217: *14 readv: eof:1, avail:0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 readv: 1, last:2432 +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe recv chain: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe length: -1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 input buf #0 000061F3F26B16B4 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 01 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 06 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 01 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record length: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi closed stdout +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 01 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 03 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 01 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 08 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record byte: 00 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi record length: 8 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http fastcgi sent end request +2025/08/19 13:52:52 [debug] 398217#398217: *14 input buf 000061F3F26B16B4 257 +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe write downstream: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe write downstream flush in +2025/08/19 13:52:52 [debug] 398217#398217: *14 http output filter "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http copy filter: "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http postpone filter "/upload?" 000061F3F26BCBE0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http chunk: 257 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write new buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write new buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter: l:0 f:0 s:264 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http copy filter: 0 "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 pipe write downstream done +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer: 10, old: 192765252, new: 192765254 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream exit: 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *14 finalize http upstream request: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 finalize http fastcgi request +2025/08/19 13:52:52 [debug] 398217#398217: *14 free rr peer 1 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 close http upstream connection: 10 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F268FF20, unused: 48 +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer del: 10: 192765252 +2025/08/19 13:52:52 [debug] 398217#398217: *14 reusable connection: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http upstream temp fd: -1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http output filter "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http copy filter: "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http postpone filter "/upload?" 00007FFE4490F9F0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http chunk: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write old buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write old buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter: l:1 f:0 s:269 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter limit 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 writev: 269 of 269 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http write filter 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http copy filter: 0 "/upload?" +2025/08/19 13:52:52 [debug] 398217#398217: *14 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 set http keepalive handler +2025/08/19 13:52:52 [debug] 398217#398217: *14 http close request +2025/08/19 13:52:52 [debug] 398217#398217: *14 http log handler +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26B1150 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26C5A20, unused: 3 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26BBD90, unused: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26B0140, unused: 54 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26B2160, unused: 2202 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26A90A0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 hc free: 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *14 hc busy: 0000000000000000 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 tcp_nodelay +2025/08/19 13:52:52 [debug] 398217#398217: *14 reusable connection: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer add: 6: 65000:192770254 +2025/08/19 13:52:52 [debug] 398217#398217: *14 post event 000061F3F26F7760 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:52:52 [debug] 398217#398217: posted event 000061F3F26F7760 +2025/08/19 13:52:52 [debug] 398217#398217: *14 delete posted event 000061F3F26F7760 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http keepalive handler +2025/08/19 13:52:52 [debug] 398217#398217: *14 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: eof:0, avail:0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26A90A0 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 http keepalive handler +2025/08/19 13:52:52 [debug] 398217#398217: *14 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: eof:1, avail:-1 +2025/08/19 13:52:52 [debug] 398217#398217: *14 recv: fd:6 0 of 1024 +2025/08/19 13:52:52 [info] 398217#398217: *14 client 127.0.0.1 closed keepalive connection +2025/08/19 13:52:52 [debug] 398217#398217: *14 close http connection: 6 +2025/08/19 13:52:52 [debug] 398217#398217: *14 event timer del: 6: 192770254 +2025/08/19 13:52:52 [debug] 398217#398217: *14 reusable connection: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26A90A0 +2025/08/19 13:52:52 [debug] 398217#398217: *14 free: 000061F3F26A6840, unused: 120 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:52:52 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:52:52 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *16 accept: 127.0.0.1:41484 fd:6 +2025/08/19 13:52:52 [debug] 398217#398217: *16 event timer add: 6: 60000:192765265 +2025/08/19 13:52:52 [debug] 398217#398217: *16 reusable connection: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 10 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http wait request handler +2025/08/19 13:52:52 [debug] 398217#398217: *16 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:52 [debug] 398217#398217: *16 recv: eof:0, avail:-1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 recv: fd:6 142 of 1024 +2025/08/19 13:52:52 [debug] 398217#398217: *16 reusable connection: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http process request line +2025/08/19 13:52:52 [debug] 398217#398217: *16 http request line: "GET /878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75 HTTP/1.1" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http uri: "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http args: "" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http exten: "" +2025/08/19 13:52:52 [debug] 398217#398217: *16 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http process request header line +2025/08/19 13:52:52 [debug] 398217#398217: *16 http header: "Host: localhost:9001" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http header: "Accept: */*" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http header done +2025/08/19 13:52:52 [debug] 398217#398217: *16 event timer del: 6: 192765265 +2025/08/19 13:52:52 [debug] 398217#398217: *16 generic phase: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 rewrite phase: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 test location: "/health" +2025/08/19 13:52:52 [debug] 398217#398217: *16 test location: "/debug/list" +2025/08/19 13:52:52 [debug] 398217#398217: *16 test location: "/" +2025/08/19 13:52:52 [debug] 398217#398217: *16 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:52:52 [debug] 398217#398217: *16 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http cl:-1 max:104857600 +2025/08/19 13:52:52 [debug] 398217#398217: *16 rewrite phase: 3 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http script var +2025/08/19 13:52:52 [debug] 398217#398217: *16 http script var: "GET" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http script value: "DELETE" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http script not equal +2025/08/19 13:52:52 [debug] 398217#398217: *16 http script if +2025/08/19 13:52:52 [debug] 398217#398217: *16 http finalize request: 404, "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" a:1, c:1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http special response: 404, "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http set discard body +2025/08/19 13:52:52 [debug] 398217#398217: *16 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:52:52 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 13:52:52 [debug] 398217#398217: *16 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http write filter: l:0 f:0 s:164 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http output filter "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http copy filter: "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http postpone filter "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" 000061F3F26BC300 +2025/08/19 13:52:52 [debug] 398217#398217: *16 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4580, size: 100 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4C80, size: 62 file: 0, size: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http write filter: l:1 f:0 s:326 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http write filter limit 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 writev: 326 of 326 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http write filter 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http copy filter: 0 "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" +2025/08/19 13:52:52 [debug] 398217#398217: *16 http finalize request: 0, "/878a63847120be9c2949845989144a0a1460b5f66a300fe04d0c7f9fa3906e75?" a:1, c:1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 set http keepalive handler +2025/08/19 13:52:52 [debug] 398217#398217: *16 http close request +2025/08/19 13:52:52 [debug] 398217#398217: *16 http log handler +2025/08/19 13:52:52 [debug] 398217#398217: *16 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 free: 000061F3F26BBD90, unused: 2456 +2025/08/19 13:52:52 [debug] 398217#398217: *16 free: 000061F3F26A90A0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 hc free: 0000000000000000 +2025/08/19 13:52:52 [debug] 398217#398217: *16 hc busy: 0000000000000000 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 tcp_nodelay +2025/08/19 13:52:52 [debug] 398217#398217: *16 reusable connection: 1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 event timer add: 6: 65000:192770265 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:52:52 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 http keepalive handler +2025/08/19 13:52:52 [debug] 398217#398217: *16 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:52:52 [debug] 398217#398217: *16 recv: eof:1, avail:-1 +2025/08/19 13:52:52 [debug] 398217#398217: *16 recv: fd:6 0 of 1024 +2025/08/19 13:52:52 [info] 398217#398217: *16 client 127.0.0.1 closed keepalive connection +2025/08/19 13:52:52 [debug] 398217#398217: *16 close http connection: 6 +2025/08/19 13:52:52 [debug] 398217#398217: *16 event timer del: 6: 192770265 +2025/08/19 13:52:52 [debug] 398217#398217: *16 reusable connection: 0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 free: 000061F3F26A90A0 +2025/08/19 13:52:52 [debug] 398217#398217: *16 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:52:52 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:52:52 [debug] 398217#398217: worker cycle +2025/08/19 13:52:52 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:55:05 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:55:05 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *17 accept: 127.0.0.1:51368 fd:6 +2025/08/19 13:55:05 [debug] 398217#398217: *17 event timer add: 6: 60000:192898662 +2025/08/19 13:55:05 [debug] 398217#398217: *17 reusable connection: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *17 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 133396 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http wait request handler +2025/08/19 13:55:05 [debug] 398217#398217: *17 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *17 recv: eof:0, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *17 recv: fd:6 84 of 1024 +2025/08/19 13:55:05 [debug] 398217#398217: *17 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http process request line +2025/08/19 13:55:05 [debug] 398217#398217: *17 http request line: "GET /health HTTP/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http uri: "/health" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http args: "" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http exten: "" +2025/08/19 13:55:05 [debug] 398217#398217: *17 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http process request header line +2025/08/19 13:55:05 [debug] 398217#398217: *17 http header: "Host: localhost:9001" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http header: "Accept: */*" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http header done +2025/08/19 13:55:05 [debug] 398217#398217: *17 event timer del: 6: 192898662 +2025/08/19 13:55:05 [debug] 398217#398217: *17 generic phase: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 rewrite phase: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *17 test location: "/health" +2025/08/19 13:55:05 [debug] 398217#398217: *17 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *17 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:55:05 [debug] 398217#398217: *17 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *17 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *17 using configuration "/health" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http cl:-1 max:104857600 +2025/08/19 13:55:05 [debug] 398217#398217: *17 rewrite phase: 3 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http set discard body +2025/08/19 13:55:05 [debug] 398217#398217: *17 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:55:05 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 13:55:05 [debug] 398217#398217: *17 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http write filter: l:0 f:0 s:196 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http output filter "/health?" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http copy filter: "/health?" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http postpone filter "/health?" 00007FFE4490F940 +2025/08/19 13:55:05 [debug] 398217#398217: *17 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 write new buf t:0 f:0 0000000000000000, pos 000061F3F26E3B32, size: 3 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http write filter: l:1 f:0 s:199 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http write filter limit 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 writev: 199 of 199 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http write filter 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http copy filter: 0 "/health?" +2025/08/19 13:55:05 [debug] 398217#398217: *17 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 13:55:05 [debug] 398217#398217: *17 set http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *17 http close request +2025/08/19 13:55:05 [debug] 398217#398217: *17 http log handler +2025/08/19 13:55:05 [debug] 398217#398217: *17 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 free: 000061F3F26BBD90, unused: 2736 +2025/08/19 13:55:05 [debug] 398217#398217: *17 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 hc free: 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *17 hc busy: 0000000000000000 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 tcp_nodelay +2025/08/19 13:55:05 [debug] 398217#398217: *17 reusable connection: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *17 event timer add: 6: 65000:192903662 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *17 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *17 recv: eof:1, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *17 recv: fd:6 0 of 1024 +2025/08/19 13:55:05 [info] 398217#398217: *17 client 127.0.0.1 closed keepalive connection +2025/08/19 13:55:05 [debug] 398217#398217: *17 close http connection: 6 +2025/08/19 13:55:05 [debug] 398217#398217: *17 event timer del: 6: 192903662 +2025/08/19 13:55:05 [debug] 398217#398217: *17 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: *17 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:55:05 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:55:05 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *18 accept: 127.0.0.1:51382 fd:6 +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer add: 6: 60000:192898940 +2025/08/19 13:55:05 [debug] 398217#398217: *18 reusable connection: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 278 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http wait request handler +2025/08/19 13:55:05 [debug] 398217#398217: *18 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: eof:0, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: fd:6 1024 of 1024 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: avail:112 +2025/08/19 13:55:05 [debug] 398217#398217: *18 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http process request line +2025/08/19 13:55:05 [debug] 398217#398217: *18 http request line: "PUT /upload HTTP/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http uri: "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http args: "" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http exten: "" +2025/08/19 13:55:05 [debug] 398217#398217: *18 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http process request header line +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "Host: localhost:9001" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "Accept: */*" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzODQ1N2M5OTc4OTZhYTU3YTUxM2VlOWNjNGM4ZTRiNzEwZDRmYThiNzQ4YjNhOTBkNWFjYTEzYzRmY2NjMWI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxMDUsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI3MzliYjFiYzNmM2MxNmVjYTBmY2QzMzY2MTFhOGUyMTY2NjExYmRhMGQ0NzdlNmZjODhmMzk2NzU4ZjNjNGE2Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTcwNSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5MTdjNDJlYTcxZWVhMDUyNTUwZjdiOTlhMGZiNmNmNWQ4OTlkMDM4NDI3NWVjZjgwOTYxZGE0MzgzNjJmMzg1MzU2YTJhNTdjYzkwZGQ4YTI4MzhlNTM0YzU1MGZkMjIyYjM1OGI1MDY2MDA0ZGIyZTg1NzFjZGE5YWFmZmM4In0=" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "Content-Type: text/plain" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "Content-Disposition: attachment; filename="test_blob_1755626105.txt"" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header: "Content-Length: 296" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http header done +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer del: 6: 192898940 +2025/08/19 13:55:05 [debug] 398217#398217: *18 generic phase: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 rewrite phase: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 test location: "/health" +2025/08/19 13:55:05 [debug] 398217#398217: *18 test location: "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *18 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:55:05 [debug] 398217#398217: *18 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *18 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *18 using configuration "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http cl:296 max:104857600 +2025/08/19 13:55:05 [debug] 398217#398217: *18 rewrite phase: 3 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "PUT" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script regex: "^(PUT)$" +2025/08/19 13:55:05 [notice] 398217#398217: *18 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script if +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script if: false +2025/08/19 13:55:05 [debug] 398217#398217: *18 post rewrite phase: 4 +2025/08/19 13:55:05 [debug] 398217#398217: *18 generic phase: 5 +2025/08/19 13:55:05 [debug] 398217#398217: *18 generic phase: 6 +2025/08/19 13:55:05 [debug] 398217#398217: *18 generic phase: 7 +2025/08/19 13:55:05 [debug] 398217#398217: *18 access phase: 8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 access phase: 9 +2025/08/19 13:55:05 [debug] 398217#398217: *18 access phase: 10 +2025/08/19 13:55:05 [debug] 398217#398217: *18 post access phase: 11 +2025/08/19 13:55:05 [debug] 398217#398217: *18 generic phase: 12 +2025/08/19 13:55:05 [debug] 398217#398217: *18 generic phase: 13 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http client request body preread 184 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http request body content length filter +2025/08/19 13:55:05 [debug] 398217#398217: *18 http body new buf t:1 f:0 000061F3F26A93E8, pos 000061F3F26A93E8, size: 184 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http read client request body +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: eof:0, avail:112 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: fd:6 112 of 112 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: avail:0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http client request body recv 112 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http body new buf t:1 f:0 000061F3F26BC820, pos 000061F3F26BC820, size: 112 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http client request body rest 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http init upstream, client timer: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 13:55:05 [debug] 398217#398217: *18 posix_memalign: 000061F3F26B0140:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "QUERY_STRING" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "QUERY_STRING: " +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "REQUEST_METHOD" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "PUT" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "CONTENT_TYPE" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "text/plain" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "CONTENT_LENGTH" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "296" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SCRIPT_NAME" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "REQUEST_URI" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "DOCUMENT_URI" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "DOCUMENT_ROOT" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "./blobs" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SERVER_PROTOCOL" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "HTTP/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "REQUEST_SCHEME" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "http" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "GATEWAY_INTERFACE" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "CGI/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SERVER_SOFTWARE" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "nginx/" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "1.18.0" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "REMOTE_ADDR" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "127.0.0.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "REMOTE_PORT" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "51382" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "REMOTE_PORT: 51382" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SERVER_ADDR" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "127.0.0.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SERVER_PORT" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "9001" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SERVER_NAME" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "localhost" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "REDIRECT_STATUS" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "200" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "SCRIPT_FILENAME" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script var: "./blobs" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http script copy: "/ginxsom.fcgi" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzODQ1N2M5OTc4OTZhYTU3YTUxM2VlOWNjNGM4ZTRiNzEwZDRmYThiNzQ4YjNhOTBkNWFjYTEzYzRmY2NjMWI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxMDUsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI3MzliYjFiYzNmM2MxNmVjYTBmY2QzMzY2MTFhOGUyMTY2NjExYmRhMGQ0NzdlNmZjODhmMzk2NzU4ZjNjNGE2Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTcwNSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5MTdjNDJlYTcxZWVhMDUyNTUwZjdiOTlhMGZiNmNmNWQ4OTlkMDM4NDI3NWVjZjgwOTYxZGE0MzgzNjJmMzg1MzU2YTJhNTdjYzkwZGQ4YTI4MzhlNTM0YzU1MGZkMjIyYjM1OGI1MDY2MDA0ZGIyZTg1NzFjZGE5YWFmZmM4In0=" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755626105.txt"" +2025/08/19 13:55:05 [debug] 398217#398217: *18 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http cleanup add: 000061F3F26BCB70 +2025/08/19 13:55:05 [debug] 398217#398217: *18 get rr peer, try: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 stream socket 10 +2025/08/19 13:55:05 [debug] 398217#398217: *18 epoll add connection: fd:10 ev:80002005 +2025/08/19 13:55:05 [debug] 398217#398217: *18 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #19 +2025/08/19 13:55:05 [debug] 398217#398217: *18 connected +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream connect: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream send request +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream send request body +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer buf fl:0 s:1304 +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer buf fl:0 s:184 +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer buf fl:0 s:8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer buf fl:0 s:112 +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer buf fl:0 s:8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer in: 000061F3F26BCC00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 writev: 1616 of 1616 +2025/08/19 13:55:05 [debug] 398217#398217: *18 chain writer out: 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer add: 10: 60000:192898940 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http request count:2 blk:0 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http run request: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream check client, write event:1, "/upload" +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream request: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream dummy handler +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 59999 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:10 ev:0005 d:00007877C5D892C8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream request: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream process header +2025/08/19 13:55:05 [debug] 398217#398217: *18 malloc: 000061F3F26B1150:4096 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: eof:0, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: fd:10 1664 of 4096 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 01 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 06 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 01 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 06 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 5D +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 03 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record length: 1629 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "LOG: [2025-08-19 13:55:05] PUT /upload - Auth: pending - Status: 0" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzODQ1N2M5OTc4OTZhYTU3YTUxM2VlOWNjNGM4ZTRiNzEwZDRmYThiNzQ4YjNhOTBkNWFjYTEzYzRmY2NjMWI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxMDUsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI3MzliYjFiYzNmM2MxNmVjYTBmY2QzMzY2MTFhOGUyMTY2NjExYmRhMGQ0NzdlNmZjODhmMzk2NzU4ZjNjNGE2Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTcwNSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5MTdjNDJlYTcxZWVhMDUyNTUwZjdiOTlhMGZiNmNmNWQ4OTlkMDM4NDI3NWVjZjgwOTYxZGE0MzgzNjJmMzg1MzU2YTJhNTdjYzkwZGQ4YTI4MzhlNTM0YzU1MGZkMjIyYjM1OGI1MDY2MDA0ZGIyZTg1NzFjZGE5YWFmZmM4In0=" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: Authenticating request - method: PUT, hash: null" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiIzODQ1N2M5OTc4OTZhYTU3YTUxM2VlOWNjNGM4ZTRiNzEwZDRmYThiNzQ4YjNhOTBkNWFjYTEz..." +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"38457c997896aa57a513ee9cc4c8e4b710d4fa8b748b3a90d5aca13c4fccc1b4","pubkey":"79be..." +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "DEBUG: Nostr event validation failed: -32 (Event has invalid public key)" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header: "Content-Type: application/json" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi parser: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi header done +2025/08/19 13:55:05 [debug] 398217#398217: *18 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *18 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:55:05 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 13:55:05] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzODQ1N2M5OTc4OTZhYTU3YTUxM2VlOWNjNGM4ZTRiNzEwZDRmYThiNzQ4YjNhOTBkNWFjYTEzYzRmY2NjMWI0IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxMDUsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI3MzliYjFiYzNmM2MxNmVjYTBmY2QzMzY2MTFhOGUyMTY2NjExYmRhMGQ0NzdlNmZjODhmMzk2NzU4ZjNjNGE2Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTcwNSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5MTdjNDJlYTcxZWVhMDUyNTUwZjdiOTlhMGZiNmNmNWQ4OTlkMDM4NDI3NWVjZjgwOTYxZGE0MzgzNjJmMzg1MzU2YTJhNTdjYzkwZGQ4YTI4MzhlNTM0YzU1MGZkMjIyYjM1OGI1MDY2MDA0ZGIyZTg1NzFjZGE5YWFmZmM4In0= +DEBUG: Authenticating request - method: PUT, hash: null +DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiIzODQ1N2M5OTc4OTZhYTU3YTUxM2VlOWNjNGM4ZTRiNzEwZDRmYThiNzQ4YjNhOTBkNWFjYTEz... +DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"38457c997896aa57a513ee9cc4c8e4b710d4fa8b748b3a90d5aca13c4fccc1b4","pubkey":"79be... +DEBUG: Nostr event validation failed: -32 (Event has invalid public key) + +2025/08/19 13:55:05 [debug] 398217#398217: *18 write new buf t:1 f:0 000061F3F26B2180, pos 000061F3F26B2180, size: 1493 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter: l:0 f:0 s:1493 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter limit 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 writev: 1493 of 1493 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http cacheable: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream process upstream +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe read upstream: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe preread: 284 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe length: -1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe write downstream: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe write busy: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe write: out:0000000000000000, f:0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe read upstream: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe length: -1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer: 10, old: 192898940, new: 192898941 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream request: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream dummy handler +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 59999 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream request: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream process upstream +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe read upstream: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 readv: eof:1, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 readv: 1, last:2432 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe recv chain: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe length: -1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 input buf #0 000061F3F26B16B4 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 01 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 06 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 01 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record length: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi closed stdout +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 01 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 03 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 01 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 08 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record byte: 00 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi record length: 8 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http fastcgi sent end request +2025/08/19 13:55:05 [debug] 398217#398217: *18 input buf 000061F3F26B16B4 257 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe write downstream: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe write downstream flush in +2025/08/19 13:55:05 [debug] 398217#398217: *18 http output filter "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http copy filter: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http postpone filter "/upload?" 000061F3F26BCBE0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http chunk: 257 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write new buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write new buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter: l:0 f:0 s:264 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http copy filter: 0 "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 pipe write downstream done +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer: 10, old: 192898940, new: 192898941 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream exit: 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *18 finalize http upstream request: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 finalize http fastcgi request +2025/08/19 13:55:05 [debug] 398217#398217: *18 free rr peer 1 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 close http upstream connection: 10 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F268FF20, unused: 48 +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer del: 10: 192898940 +2025/08/19 13:55:05 [debug] 398217#398217: *18 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http upstream temp fd: -1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http output filter "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http copy filter: "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http postpone filter "/upload?" 00007FFE4490F9F0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http chunk: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write old buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write old buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter: l:1 f:0 s:269 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter limit 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 writev: 269 of 269 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http write filter 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http copy filter: 0 "/upload?" +2025/08/19 13:55:05 [debug] 398217#398217: *18 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 set http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *18 http close request +2025/08/19 13:55:05 [debug] 398217#398217: *18 http log handler +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26B1150 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26C5A20, unused: 3 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26BBD90, unused: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26B0140, unused: 54 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26B2160, unused: 2202 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 hc free: 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *18 hc busy: 0000000000000000 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 tcp_nodelay +2025/08/19 13:55:05 [debug] 398217#398217: *18 reusable connection: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer add: 6: 65000:192903941 +2025/08/19 13:55:05 [debug] 398217#398217: *18 post event 000061F3F26F7760 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: posted event 000061F3F26F7760 +2025/08/19 13:55:05 [debug] 398217#398217: *18 delete posted event 000061F3F26F7760 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *18 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: eof:0, avail:0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *18 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: eof:1, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *18 recv: fd:6 0 of 1024 +2025/08/19 13:55:05 [info] 398217#398217: *18 client 127.0.0.1 closed keepalive connection +2025/08/19 13:55:05 [debug] 398217#398217: *18 close http connection: 6 +2025/08/19 13:55:05 [debug] 398217#398217: *18 event timer del: 6: 192903941 +2025/08/19 13:55:05 [debug] 398217#398217: *18 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: *18 free: 000061F3F26A6840, unused: 120 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:55:05 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:55:05 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *20 accept: 127.0.0.1:51398 fd:6 +2025/08/19 13:55:05 [debug] 398217#398217: *20 event timer add: 6: 60000:192898946 +2025/08/19 13:55:05 [debug] 398217#398217: *20 reusable connection: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 5 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http wait request handler +2025/08/19 13:55:05 [debug] 398217#398217: *20 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *20 recv: eof:0, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 recv: fd:6 142 of 1024 +2025/08/19 13:55:05 [debug] 398217#398217: *20 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http process request line +2025/08/19 13:55:05 [debug] 398217#398217: *20 http request line: "GET /739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6 HTTP/1.1" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http uri: "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http args: "" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http exten: "" +2025/08/19 13:55:05 [debug] 398217#398217: *20 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http process request header line +2025/08/19 13:55:05 [debug] 398217#398217: *20 http header: "Host: localhost:9001" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http header: "Accept: */*" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http header done +2025/08/19 13:55:05 [debug] 398217#398217: *20 event timer del: 6: 192898946 +2025/08/19 13:55:05 [debug] 398217#398217: *20 generic phase: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 rewrite phase: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 test location: "/health" +2025/08/19 13:55:05 [debug] 398217#398217: *20 test location: "/debug/list" +2025/08/19 13:55:05 [debug] 398217#398217: *20 test location: "/" +2025/08/19 13:55:05 [debug] 398217#398217: *20 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *20 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http cl:-1 max:104857600 +2025/08/19 13:55:05 [debug] 398217#398217: *20 rewrite phase: 3 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http script var +2025/08/19 13:55:05 [debug] 398217#398217: *20 http script var: "GET" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http script value: "DELETE" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http script not equal +2025/08/19 13:55:05 [debug] 398217#398217: *20 http script if +2025/08/19 13:55:05 [debug] 398217#398217: *20 http finalize request: 404, "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" a:1, c:1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http special response: 404, "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http set discard body +2025/08/19 13:55:05 [debug] 398217#398217: *20 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:55:05 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 13:55:05 [debug] 398217#398217: *20 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http write filter: l:0 f:0 s:164 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http output filter "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http copy filter: "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http postpone filter "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" 000061F3F26BC300 +2025/08/19 13:55:05 [debug] 398217#398217: *20 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4580, size: 100 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4C80, size: 62 file: 0, size: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http write filter: l:1 f:0 s:326 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http write filter limit 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 writev: 326 of 326 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http write filter 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http copy filter: 0 "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" +2025/08/19 13:55:05 [debug] 398217#398217: *20 http finalize request: 0, "/739bb1bc3f3c16eca0fcd336611a8e2166611bda0d477e6fc88f396758f3c4a6?" a:1, c:1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 set http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *20 http close request +2025/08/19 13:55:05 [debug] 398217#398217: *20 http log handler +2025/08/19 13:55:05 [debug] 398217#398217: *20 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 free: 000061F3F26BBD90, unused: 2456 +2025/08/19 13:55:05 [debug] 398217#398217: *20 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 hc free: 0000000000000000 +2025/08/19 13:55:05 [debug] 398217#398217: *20 hc busy: 0000000000000000 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 tcp_nodelay +2025/08/19 13:55:05 [debug] 398217#398217: *20 reusable connection: 1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 event timer add: 6: 65000:192903946 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:55:05 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 http keepalive handler +2025/08/19 13:55:05 [debug] 398217#398217: *20 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:55:05 [debug] 398217#398217: *20 recv: eof:1, avail:-1 +2025/08/19 13:55:05 [debug] 398217#398217: *20 recv: fd:6 0 of 1024 +2025/08/19 13:55:05 [info] 398217#398217: *20 client 127.0.0.1 closed keepalive connection +2025/08/19 13:55:05 [debug] 398217#398217: *20 close http connection: 6 +2025/08/19 13:55:05 [debug] 398217#398217: *20 event timer del: 6: 192903946 +2025/08/19 13:55:05 [debug] 398217#398217: *20 reusable connection: 0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 free: 000061F3F26A90A0 +2025/08/19 13:55:05 [debug] 398217#398217: *20 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:55:05 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:55:05 [debug] 398217#398217: worker cycle +2025/08/19 13:55:05 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:56:03 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:56:03 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *21 accept: 127.0.0.1:45856 fd:6 +2025/08/19 13:56:03 [debug] 398217#398217: *21 event timer add: 6: 60000:192956173 +2025/08/19 13:56:03 [debug] 398217#398217: *21 reusable connection: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 57227 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http wait request handler +2025/08/19 13:56:03 [debug] 398217#398217: *21 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *21 recv: eof:0, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 recv: fd:6 84 of 1024 +2025/08/19 13:56:03 [debug] 398217#398217: *21 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http process request line +2025/08/19 13:56:03 [debug] 398217#398217: *21 http request line: "GET /health HTTP/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http uri: "/health" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http args: "" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http exten: "" +2025/08/19 13:56:03 [debug] 398217#398217: *21 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http process request header line +2025/08/19 13:56:03 [debug] 398217#398217: *21 http header: "Host: localhost:9001" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http header: "Accept: */*" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http header done +2025/08/19 13:56:03 [debug] 398217#398217: *21 event timer del: 6: 192956173 +2025/08/19 13:56:03 [debug] 398217#398217: *21 generic phase: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 rewrite phase: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 test location: "/health" +2025/08/19 13:56:03 [debug] 398217#398217: *21 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *21 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:56:03 [debug] 398217#398217: *21 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *21 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *21 using configuration "/health" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http cl:-1 max:104857600 +2025/08/19 13:56:03 [debug] 398217#398217: *21 rewrite phase: 3 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http set discard body +2025/08/19 13:56:03 [debug] 398217#398217: *21 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:56:03 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 13:56:03 [debug] 398217#398217: *21 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http write filter: l:0 f:0 s:196 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http output filter "/health?" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http copy filter: "/health?" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http postpone filter "/health?" 00007FFE4490F940 +2025/08/19 13:56:03 [debug] 398217#398217: *21 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 write new buf t:0 f:0 0000000000000000, pos 000061F3F26E3B32, size: 3 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http write filter: l:1 f:0 s:199 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http write filter limit 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 writev: 199 of 199 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http write filter 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http copy filter: 0 "/health?" +2025/08/19 13:56:03 [debug] 398217#398217: *21 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 set http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *21 http close request +2025/08/19 13:56:03 [debug] 398217#398217: *21 http log handler +2025/08/19 13:56:03 [debug] 398217#398217: *21 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 free: 000061F3F26BBD90, unused: 2736 +2025/08/19 13:56:03 [debug] 398217#398217: *21 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 hc free: 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *21 hc busy: 0000000000000000 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 tcp_nodelay +2025/08/19 13:56:03 [debug] 398217#398217: *21 reusable connection: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 event timer add: 6: 65000:192961174 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *21 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *21 recv: eof:1, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *21 recv: fd:6 0 of 1024 +2025/08/19 13:56:03 [info] 398217#398217: *21 client 127.0.0.1 closed keepalive connection +2025/08/19 13:56:03 [debug] 398217#398217: *21 close http connection: 6 +2025/08/19 13:56:03 [debug] 398217#398217: *21 event timer del: 6: 192961174 +2025/08/19 13:56:03 [debug] 398217#398217: *21 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: *21 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:56:03 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:56:03 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *22 accept: 127.0.0.1:45866 fd:6 +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer add: 6: 60000:192956446 +2025/08/19 13:56:03 [debug] 398217#398217: *22 reusable connection: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 272 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http wait request handler +2025/08/19 13:56:03 [debug] 398217#398217: *22 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: eof:0, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: fd:6 1024 of 1024 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: avail:112 +2025/08/19 13:56:03 [debug] 398217#398217: *22 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http process request line +2025/08/19 13:56:03 [debug] 398217#398217: *22 http request line: "PUT /upload HTTP/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http uri: "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http args: "" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http exten: "" +2025/08/19 13:56:03 [debug] 398217#398217: *22 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http process request header line +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "Host: localhost:9001" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "Accept: */*" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIyYWZmODJiZGNjODllYWQzOGExOGU2YmRkZWY3MjgwMjU0NWMzYjU2MDJiNTUyMzEwODBiOGQwNzE2NGMwOTcyIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxNjMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJjZWM1YWMyODhlN2MyODU1ZGYyN2QwOTA3YTdlMDVhNjcyMWY5ODgzNzU4NmE0NTJkYmM5MTdkOTQ5NDEzNWNjIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTc2MyJdXSwiY29udGVudCI6IiIsInNpZyI6ImM5NGUyZTcyMTQxMDc0N2I5NDIxZTRlYzUxOTE1M2E1OWNhYjY2Yjk4MmI4OTA0Zjk5YjQ4OTk1OTYyMmU3N2YwMjNmYzczODAxNDI1MmU3MGRkN2UyY2M5MGQ2YjFlZmJhNzExNTE1MjlkMDcyYmIwZGNmMGE3YjgyN2FiN2RjIn0=" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "Content-Type: text/plain" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "Content-Disposition: attachment; filename="test_blob_1755626163.txt"" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header: "Content-Length: 296" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http header done +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer del: 6: 192956446 +2025/08/19 13:56:03 [debug] 398217#398217: *22 generic phase: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 rewrite phase: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 test location: "/health" +2025/08/19 13:56:03 [debug] 398217#398217: *22 test location: "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *22 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:56:03 [debug] 398217#398217: *22 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *22 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *22 using configuration "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http cl:296 max:104857600 +2025/08/19 13:56:03 [debug] 398217#398217: *22 rewrite phase: 3 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "PUT" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script regex: "^(PUT)$" +2025/08/19 13:56:03 [notice] 398217#398217: *22 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script if +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script if: false +2025/08/19 13:56:03 [debug] 398217#398217: *22 post rewrite phase: 4 +2025/08/19 13:56:03 [debug] 398217#398217: *22 generic phase: 5 +2025/08/19 13:56:03 [debug] 398217#398217: *22 generic phase: 6 +2025/08/19 13:56:03 [debug] 398217#398217: *22 generic phase: 7 +2025/08/19 13:56:03 [debug] 398217#398217: *22 access phase: 8 +2025/08/19 13:56:03 [debug] 398217#398217: *22 access phase: 9 +2025/08/19 13:56:03 [debug] 398217#398217: *22 access phase: 10 +2025/08/19 13:56:03 [debug] 398217#398217: *22 post access phase: 11 +2025/08/19 13:56:03 [debug] 398217#398217: *22 generic phase: 12 +2025/08/19 13:56:03 [debug] 398217#398217: *22 generic phase: 13 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http client request body preread 184 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http request body content length filter +2025/08/19 13:56:03 [debug] 398217#398217: *22 http body new buf t:1 f:0 000061F3F26A93E8, pos 000061F3F26A93E8, size: 184 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http read client request body +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: eof:0, avail:112 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: fd:6 112 of 112 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: avail:0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http client request body recv 112 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http body new buf t:1 f:0 000061F3F26BC820, pos 000061F3F26BC820, size: 112 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http client request body rest 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http init upstream, client timer: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 13:56:03 [debug] 398217#398217: *22 posix_memalign: 000061F3F26B0140:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "QUERY_STRING" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "QUERY_STRING: " +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "REQUEST_METHOD" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "PUT" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "CONTENT_TYPE" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "text/plain" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "CONTENT_LENGTH" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "296" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SCRIPT_NAME" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "REQUEST_URI" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "DOCUMENT_URI" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "DOCUMENT_ROOT" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "./blobs" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SERVER_PROTOCOL" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "HTTP/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "REQUEST_SCHEME" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "http" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "GATEWAY_INTERFACE" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "CGI/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SERVER_SOFTWARE" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "nginx/" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "1.18.0" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "REMOTE_ADDR" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "127.0.0.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "REMOTE_PORT" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "45866" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "REMOTE_PORT: 45866" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SERVER_ADDR" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "127.0.0.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SERVER_PORT" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "9001" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SERVER_NAME" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "localhost" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "REDIRECT_STATUS" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "200" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "SCRIPT_FILENAME" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script var: "./blobs" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http script copy: "/ginxsom.fcgi" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIyYWZmODJiZGNjODllYWQzOGExOGU2YmRkZWY3MjgwMjU0NWMzYjU2MDJiNTUyMzEwODBiOGQwNzE2NGMwOTcyIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxNjMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJjZWM1YWMyODhlN2MyODU1ZGYyN2QwOTA3YTdlMDVhNjcyMWY5ODgzNzU4NmE0NTJkYmM5MTdkOTQ5NDEzNWNjIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTc2MyJdXSwiY29udGVudCI6IiIsInNpZyI6ImM5NGUyZTcyMTQxMDc0N2I5NDIxZTRlYzUxOTE1M2E1OWNhYjY2Yjk4MmI4OTA0Zjk5YjQ4OTk1OTYyMmU3N2YwMjNmYzczODAxNDI1MmU3MGRkN2UyY2M5MGQ2YjFlZmJhNzExNTE1MjlkMDcyYmIwZGNmMGE3YjgyN2FiN2RjIn0=" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755626163.txt"" +2025/08/19 13:56:03 [debug] 398217#398217: *22 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http cleanup add: 000061F3F26BCB70 +2025/08/19 13:56:03 [debug] 398217#398217: *22 get rr peer, try: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 stream socket 10 +2025/08/19 13:56:03 [debug] 398217#398217: *22 epoll add connection: fd:10 ev:80002005 +2025/08/19 13:56:03 [debug] 398217#398217: *22 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #23 +2025/08/19 13:56:03 [debug] 398217#398217: *22 connected +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream connect: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream send request +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream send request body +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer buf fl:0 s:1304 +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer buf fl:0 s:184 +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer buf fl:0 s:8 +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer buf fl:0 s:112 +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer buf fl:0 s:8 +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer in: 000061F3F26BCC00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 writev: 1616 of 1616 +2025/08/19 13:56:03 [debug] 398217#398217: *22 chain writer out: 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer add: 10: 60000:192956446 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http request count:2 blk:0 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http run request: "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream check client, write event:1, "/upload" +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C9 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream request: "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream dummy handler +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 2 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C9 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream request: "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream process header +2025/08/19 13:56:03 [debug] 398217#398217: *22 malloc: 000061F3F26B1150:4096 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: eof:1, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: fd:10 1664 of 4096 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 01 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 06 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 01 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 06 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 5D +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 03 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record length: 1629 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "LOG: [2025-08-19 13:56:03] PUT /upload - Auth: pending - Status: 0" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIyYWZmODJiZGNjODllYWQzOGExOGU2YmRkZWY3MjgwMjU0NWMzYjU2MDJiNTUyMzEwODBiOGQwNzE2NGMwOTcyIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxNjMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJjZWM1YWMyODhlN2MyODU1ZGYyN2QwOTA3YTdlMDVhNjcyMWY5ODgzNzU4NmE0NTJkYmM5MTdkOTQ5NDEzNWNjIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTc2MyJdXSwiY29udGVudCI6IiIsInNpZyI6ImM5NGUyZTcyMTQxMDc0N2I5NDIxZTRlYzUxOTE1M2E1OWNhYjY2Yjk4MmI4OTA0Zjk5YjQ4OTk1OTYyMmU3N2YwMjNmYzczODAxNDI1MmU3MGRkN2UyY2M5MGQ2YjFlZmJhNzExNTE1MjlkMDcyYmIwZGNmMGE3YjgyN2FiN2RjIn0=" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: Authenticating request - method: PUT, hash: null" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiIyYWZmODJiZGNjODllYWQzOGExOGU2YmRkZWY3MjgwMjU0NWMzYjU2MDJiNTUyMzEwODBiOGQw..." +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"2aff82bdcc89ead38a18e6bddef72802545c3b5602b55231080b8d07164c0972","pubkey":"79be..." +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "DEBUG: Nostr event validation failed: -32 (Event has invalid public key)" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header: "Content-Type: application/json" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi parser: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi header done +2025/08/19 13:56:03 [debug] 398217#398217: *22 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *22 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:56:03 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 13:56:03] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIyYWZmODJiZGNjODllYWQzOGExOGU2YmRkZWY3MjgwMjU0NWMzYjU2MDJiNTUyMzEwODBiOGQwNzE2NGMwOTcyIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYxNjMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJjZWM1YWMyODhlN2MyODU1ZGYyN2QwOTA3YTdlMDVhNjcyMWY5ODgzNzU4NmE0NTJkYmM5MTdkOTQ5NDEzNWNjIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTc2MyJdXSwiY29udGVudCI6IiIsInNpZyI6ImM5NGUyZTcyMTQxMDc0N2I5NDIxZTRlYzUxOTE1M2E1OWNhYjY2Yjk4MmI4OTA0Zjk5YjQ4OTk1OTYyMmU3N2YwMjNmYzczODAxNDI1MmU3MGRkN2UyY2M5MGQ2YjFlZmJhNzExNTE1MjlkMDcyYmIwZGNmMGE3YjgyN2FiN2RjIn0= +DEBUG: Authenticating request - method: PUT, hash: null +DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiIyYWZmODJiZGNjODllYWQzOGExOGU2YmRkZWY3MjgwMjU0NWMzYjU2MDJiNTUyMzEwODBiOGQw... +DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"2aff82bdcc89ead38a18e6bddef72802545c3b5602b55231080b8d07164c0972","pubkey":"79be... +DEBUG: Nostr event validation failed: -32 (Event has invalid public key) + +2025/08/19 13:56:03 [debug] 398217#398217: *22 write new buf t:1 f:0 000061F3F26B2180, pos 000061F3F26B2180, size: 1493 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter: l:0 f:0 s:1493 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter limit 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 writev: 1493 of 1493 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http cacheable: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream process upstream +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe read upstream: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe preread: 284 +2025/08/19 13:56:03 [debug] 398217#398217: *22 readv: eof:1, avail:0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 readv: 1, last:2432 +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe recv chain: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe length: -1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 input buf #0 000061F3F26B16B4 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 01 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 06 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 01 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record length: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi closed stdout +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 01 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 03 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 01 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 08 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record byte: 00 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi record length: 8 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http fastcgi sent end request +2025/08/19 13:56:03 [debug] 398217#398217: *22 input buf 000061F3F26B16B4 257 +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe write downstream: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe write downstream flush in +2025/08/19 13:56:03 [debug] 398217#398217: *22 http output filter "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http copy filter: "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http postpone filter "/upload?" 000061F3F26BCBE0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http chunk: 257 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write new buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write new buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter: l:0 f:0 s:264 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http copy filter: 0 "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 pipe write downstream done +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer: 10, old: 192956446, new: 192956448 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream exit: 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *22 finalize http upstream request: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 finalize http fastcgi request +2025/08/19 13:56:03 [debug] 398217#398217: *22 free rr peer 1 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 close http upstream connection: 10 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F268FF20, unused: 48 +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer del: 10: 192956446 +2025/08/19 13:56:03 [debug] 398217#398217: *22 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http upstream temp fd: -1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http output filter "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http copy filter: "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http postpone filter "/upload?" 00007FFE4490F9F0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http chunk: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write old buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write old buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter: l:1 f:0 s:269 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter limit 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 writev: 269 of 269 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http write filter 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http copy filter: 0 "/upload?" +2025/08/19 13:56:03 [debug] 398217#398217: *22 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 set http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *22 http close request +2025/08/19 13:56:03 [debug] 398217#398217: *22 http log handler +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26B1150 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26C5A20, unused: 3 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26BBD90, unused: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26B0140, unused: 54 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26B2160, unused: 2202 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 hc free: 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *22 hc busy: 0000000000000000 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 tcp_nodelay +2025/08/19 13:56:03 [debug] 398217#398217: *22 reusable connection: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer add: 6: 65000:192961448 +2025/08/19 13:56:03 [debug] 398217#398217: *22 post event 000061F3F26F7760 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:56:03 [debug] 398217#398217: posted event 000061F3F26F7760 +2025/08/19 13:56:03 [debug] 398217#398217: *22 delete posted event 000061F3F26F7760 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *22 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: eof:0, avail:0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *22 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: eof:1, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *22 recv: fd:6 0 of 1024 +2025/08/19 13:56:03 [info] 398217#398217: *22 client 127.0.0.1 closed keepalive connection +2025/08/19 13:56:03 [debug] 398217#398217: *22 close http connection: 6 +2025/08/19 13:56:03 [debug] 398217#398217: *22 event timer del: 6: 192961448 +2025/08/19 13:56:03 [debug] 398217#398217: *22 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: *22 free: 000061F3F26A6840, unused: 120 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:56:03 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:56:03 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *24 accept: 127.0.0.1:45868 fd:6 +2025/08/19 13:56:03 [debug] 398217#398217: *24 event timer add: 6: 60000:192956458 +2025/08/19 13:56:03 [debug] 398217#398217: *24 reusable connection: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 9 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http wait request handler +2025/08/19 13:56:03 [debug] 398217#398217: *24 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *24 recv: eof:0, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 recv: fd:6 142 of 1024 +2025/08/19 13:56:03 [debug] 398217#398217: *24 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http process request line +2025/08/19 13:56:03 [debug] 398217#398217: *24 http request line: "GET /cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc HTTP/1.1" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http uri: "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http args: "" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http exten: "" +2025/08/19 13:56:03 [debug] 398217#398217: *24 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http process request header line +2025/08/19 13:56:03 [debug] 398217#398217: *24 http header: "Host: localhost:9001" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http header: "Accept: */*" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http header done +2025/08/19 13:56:03 [debug] 398217#398217: *24 event timer del: 6: 192956458 +2025/08/19 13:56:03 [debug] 398217#398217: *24 generic phase: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 rewrite phase: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 test location: "/health" +2025/08/19 13:56:03 [debug] 398217#398217: *24 test location: "/debug/list" +2025/08/19 13:56:03 [debug] 398217#398217: *24 test location: "/" +2025/08/19 13:56:03 [debug] 398217#398217: *24 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *24 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http cl:-1 max:104857600 +2025/08/19 13:56:03 [debug] 398217#398217: *24 rewrite phase: 3 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http script var +2025/08/19 13:56:03 [debug] 398217#398217: *24 http script var: "GET" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http script value: "DELETE" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http script not equal +2025/08/19 13:56:03 [debug] 398217#398217: *24 http script if +2025/08/19 13:56:03 [debug] 398217#398217: *24 http finalize request: 404, "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" a:1, c:1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http special response: 404, "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http set discard body +2025/08/19 13:56:03 [debug] 398217#398217: *24 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:56:03 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 13:56:03 [debug] 398217#398217: *24 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http write filter: l:0 f:0 s:164 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http output filter "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http copy filter: "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http postpone filter "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" 000061F3F26BC300 +2025/08/19 13:56:03 [debug] 398217#398217: *24 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4580, size: 100 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4C80, size: 62 file: 0, size: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http write filter: l:1 f:0 s:326 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http write filter limit 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 writev: 326 of 326 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http write filter 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http copy filter: 0 "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" +2025/08/19 13:56:03 [debug] 398217#398217: *24 http finalize request: 0, "/cec5ac288e7c2855df27d0907a7e05a6721f98837586a452dbc917d9494135cc?" a:1, c:1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 set http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *24 http close request +2025/08/19 13:56:03 [debug] 398217#398217: *24 http log handler +2025/08/19 13:56:03 [debug] 398217#398217: *24 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 free: 000061F3F26BBD90, unused: 2456 +2025/08/19 13:56:03 [debug] 398217#398217: *24 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 hc free: 0000000000000000 +2025/08/19 13:56:03 [debug] 398217#398217: *24 hc busy: 0000000000000000 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 tcp_nodelay +2025/08/19 13:56:03 [debug] 398217#398217: *24 reusable connection: 1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 event timer add: 6: 65000:192961458 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:56:03 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 http keepalive handler +2025/08/19 13:56:03 [debug] 398217#398217: *24 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:56:03 [debug] 398217#398217: *24 recv: eof:1, avail:-1 +2025/08/19 13:56:03 [debug] 398217#398217: *24 recv: fd:6 0 of 1024 +2025/08/19 13:56:03 [info] 398217#398217: *24 client 127.0.0.1 closed keepalive connection +2025/08/19 13:56:03 [debug] 398217#398217: *24 close http connection: 6 +2025/08/19 13:56:03 [debug] 398217#398217: *24 event timer del: 6: 192961458 +2025/08/19 13:56:03 [debug] 398217#398217: *24 reusable connection: 0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 free: 000061F3F26A90A0 +2025/08/19 13:56:03 [debug] 398217#398217: *24 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:56:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:56:03 [debug] 398217#398217: worker cycle +2025/08/19 13:56:03 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:59:02 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:59:02 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:59:02 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:59:02 [debug] 398217#398217: *25 accept: 127.0.0.1:33928 fd:6 +2025/08/19 13:59:02 [debug] 398217#398217: *25 event timer add: 6: 60000:193135994 +2025/08/19 13:59:02 [debug] 398217#398217: *25 reusable connection: 1 +2025/08/19 13:59:02 [debug] 398217#398217: *25 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:59:02 [debug] 398217#398217: timer delta: 179536 +2025/08/19 13:59:02 [debug] 398217#398217: worker cycle +2025/08/19 13:59:02 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:59:02 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http wait request handler +2025/08/19 13:59:02 [debug] 398217#398217: *25 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:02 [debug] 398217#398217: *25 recv: eof:0, avail:-1 +2025/08/19 13:59:02 [debug] 398217#398217: *25 recv: fd:6 84 of 1024 +2025/08/19 13:59:02 [debug] 398217#398217: *25 reusable connection: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http process request line +2025/08/19 13:59:02 [debug] 398217#398217: *25 http request line: "GET /health HTTP/1.1" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http uri: "/health" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http args: "" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http exten: "" +2025/08/19 13:59:02 [debug] 398217#398217: *25 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http process request header line +2025/08/19 13:59:02 [debug] 398217#398217: *25 http header: "Host: localhost:9001" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http header: "Accept: */*" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http header done +2025/08/19 13:59:02 [debug] 398217#398217: *25 event timer del: 6: 193135994 +2025/08/19 13:59:02 [debug] 398217#398217: *25 generic phase: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 rewrite phase: 1 +2025/08/19 13:59:02 [debug] 398217#398217: *25 test location: "/health" +2025/08/19 13:59:02 [debug] 398217#398217: *25 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:59:02 [debug] 398217#398217: *25 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:59:02 [debug] 398217#398217: *25 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:59:02 [debug] 398217#398217: *25 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:59:02 [debug] 398217#398217: *25 using configuration "/health" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http cl:-1 max:104857600 +2025/08/19 13:59:02 [debug] 398217#398217: *25 rewrite phase: 3 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http set discard body +2025/08/19 13:59:02 [debug] 398217#398217: *25 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:59:02 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 13:59:02 [debug] 398217#398217: *25 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http write filter: l:0 f:0 s:196 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http output filter "/health?" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http copy filter: "/health?" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http postpone filter "/health?" 00007FFE4490F940 +2025/08/19 13:59:02 [debug] 398217#398217: *25 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 write new buf t:0 f:0 0000000000000000, pos 000061F3F26E3B32, size: 3 file: 0, size: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http write filter: l:1 f:0 s:199 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http write filter limit 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 writev: 199 of 199 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http write filter 0000000000000000 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http copy filter: 0 "/health?" +2025/08/19 13:59:02 [debug] 398217#398217: *25 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 13:59:02 [debug] 398217#398217: *25 set http keepalive handler +2025/08/19 13:59:02 [debug] 398217#398217: *25 http close request +2025/08/19 13:59:02 [debug] 398217#398217: *25 http log handler +2025/08/19 13:59:02 [debug] 398217#398217: *25 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 free: 000061F3F26BBD90, unused: 2736 +2025/08/19 13:59:02 [debug] 398217#398217: *25 free: 000061F3F26A90A0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 hc free: 0000000000000000 +2025/08/19 13:59:02 [debug] 398217#398217: *25 hc busy: 0000000000000000 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 tcp_nodelay +2025/08/19 13:59:02 [debug] 398217#398217: *25 reusable connection: 1 +2025/08/19 13:59:02 [debug] 398217#398217: *25 event timer add: 6: 65000:193140995 +2025/08/19 13:59:02 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:59:02 [debug] 398217#398217: worker cycle +2025/08/19 13:59:02 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:59:02 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 http keepalive handler +2025/08/19 13:59:02 [debug] 398217#398217: *25 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:02 [debug] 398217#398217: *25 recv: eof:1, avail:-1 +2025/08/19 13:59:02 [debug] 398217#398217: *25 recv: fd:6 0 of 1024 +2025/08/19 13:59:02 [info] 398217#398217: *25 client 127.0.0.1 closed keepalive connection +2025/08/19 13:59:02 [debug] 398217#398217: *25 close http connection: 6 +2025/08/19 13:59:02 [debug] 398217#398217: *25 event timer del: 6: 193140995 +2025/08/19 13:59:02 [debug] 398217#398217: *25 reusable connection: 0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 free: 000061F3F26A90A0 +2025/08/19 13:59:02 [debug] 398217#398217: *25 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:59:02 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:59:02 [debug] 398217#398217: worker cycle +2025/08/19 13:59:02 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:59:03 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:59:03 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *26 accept: 127.0.0.1:33942 fd:6 +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer add: 6: 60000:193136288 +2025/08/19 13:59:03 [debug] 398217#398217: *26 reusable connection: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 293 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http wait request handler +2025/08/19 13:59:03 [debug] 398217#398217: *26 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: eof:0, avail:-1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: fd:6 1024 of 1024 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: avail:112 +2025/08/19 13:59:03 [debug] 398217#398217: *26 reusable connection: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http process request line +2025/08/19 13:59:03 [debug] 398217#398217: *26 http request line: "PUT /upload HTTP/1.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http uri: "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http args: "" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http exten: "" +2025/08/19 13:59:03 [debug] 398217#398217: *26 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http process request header line +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "Host: localhost:9001" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "Accept: */*" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJkMzU4M2EyODRmM2UyMzE5ZTkxMjlkYzY0ZjI2NWFkODlhODY1NTM0MmEzNjhiMjY0YzU3ZWUwZTM1NTQyZDJmIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYzNDMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIwYzQzNTFjZTE3YmY3NTlmYjMyOGQ2ZGIwNTBkNGI3M2U2ZDIwNGU4YTJhZjgyOTcxY2Y1ZTRlM2QwZTQ0NjgwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTk0MiJdXSwiY29udGVudCI6IiIsInNpZyI6IjQzYjZhNzkzZGQ5NGViNWExYTU2YjM0YTVmN2RkZTY1M2E2NjQxNGVmMDdlOTA0MjAyOWFlYWQ1MmRhMGRkMGE3YzU1Y2M4ZWUzMjM0NTk0N2Y5OTE2ZDYwNDc3ODc3NTVjOWMwNmYzMGEwZmY3MzQzNzYyMGU5NzQ5ZmNjNGNiIn0=" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "Content-Type: text/plain" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "Content-Disposition: attachment; filename="test_blob_1755626342.txt"" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header: "Content-Length: 296" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http header done +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer del: 6: 193136288 +2025/08/19 13:59:03 [debug] 398217#398217: *26 generic phase: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 rewrite phase: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 test location: "/health" +2025/08/19 13:59:03 [debug] 398217#398217: *26 test location: "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:59:03 [debug] 398217#398217: *26 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 13:59:03 [debug] 398217#398217: *26 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 13:59:03 [debug] 398217#398217: *26 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 13:59:03 [debug] 398217#398217: *26 using configuration "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http cl:296 max:104857600 +2025/08/19 13:59:03 [debug] 398217#398217: *26 rewrite phase: 3 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "PUT" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script regex: "^(PUT)$" +2025/08/19 13:59:03 [notice] 398217#398217: *26 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script if +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script if: false +2025/08/19 13:59:03 [debug] 398217#398217: *26 post rewrite phase: 4 +2025/08/19 13:59:03 [debug] 398217#398217: *26 generic phase: 5 +2025/08/19 13:59:03 [debug] 398217#398217: *26 generic phase: 6 +2025/08/19 13:59:03 [debug] 398217#398217: *26 generic phase: 7 +2025/08/19 13:59:03 [debug] 398217#398217: *26 access phase: 8 +2025/08/19 13:59:03 [debug] 398217#398217: *26 access phase: 9 +2025/08/19 13:59:03 [debug] 398217#398217: *26 access phase: 10 +2025/08/19 13:59:03 [debug] 398217#398217: *26 post access phase: 11 +2025/08/19 13:59:03 [debug] 398217#398217: *26 generic phase: 12 +2025/08/19 13:59:03 [debug] 398217#398217: *26 generic phase: 13 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http client request body preread 184 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http request body content length filter +2025/08/19 13:59:03 [debug] 398217#398217: *26 http body new buf t:1 f:0 000061F3F26A93E8, pos 000061F3F26A93E8, size: 184 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http read client request body +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: eof:0, avail:112 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: fd:6 112 of 112 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: avail:0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http client request body recv 112 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http body new buf t:1 f:0 000061F3F26BC820, pos 000061F3F26BC820, size: 112 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http client request body rest 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http init upstream, client timer: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 13:59:03 [debug] 398217#398217: *26 posix_memalign: 000061F3F26B0140:4096 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "QUERY_STRING" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "QUERY_STRING: " +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "REQUEST_METHOD" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "PUT" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "CONTENT_TYPE" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "text/plain" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "CONTENT_LENGTH" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "296" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SCRIPT_NAME" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "REQUEST_URI" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "DOCUMENT_URI" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "DOCUMENT_ROOT" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "./blobs" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SERVER_PROTOCOL" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "HTTP/1.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "REQUEST_SCHEME" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "http" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "GATEWAY_INTERFACE" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "CGI/1.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SERVER_SOFTWARE" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "nginx/" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "1.18.0" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "REMOTE_ADDR" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "127.0.0.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "REMOTE_PORT" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "33942" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "REMOTE_PORT: 33942" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SERVER_ADDR" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "127.0.0.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SERVER_PORT" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "9001" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SERVER_NAME" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "localhost" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "REDIRECT_STATUS" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "200" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "SCRIPT_FILENAME" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script var: "./blobs" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http script copy: "/ginxsom.fcgi" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJkMzU4M2EyODRmM2UyMzE5ZTkxMjlkYzY0ZjI2NWFkODlhODY1NTM0MmEzNjhiMjY0YzU3ZWUwZTM1NTQyZDJmIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYzNDMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIwYzQzNTFjZTE3YmY3NTlmYjMyOGQ2ZGIwNTBkNGI3M2U2ZDIwNGU4YTJhZjgyOTcxY2Y1ZTRlM2QwZTQ0NjgwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTk0MiJdXSwiY29udGVudCI6IiIsInNpZyI6IjQzYjZhNzkzZGQ5NGViNWExYTU2YjM0YTVmN2RkZTY1M2E2NjQxNGVmMDdlOTA0MjAyOWFlYWQ1MmRhMGRkMGE3YzU1Y2M4ZWUzMjM0NTk0N2Y5OTE2ZDYwNDc3ODc3NTVjOWMwNmYzMGEwZmY3MzQzNzYyMGU5NzQ5ZmNjNGNiIn0=" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755626342.txt"" +2025/08/19 13:59:03 [debug] 398217#398217: *26 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http cleanup add: 000061F3F26BCB70 +2025/08/19 13:59:03 [debug] 398217#398217: *26 get rr peer, try: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 stream socket 10 +2025/08/19 13:59:03 [debug] 398217#398217: *26 epoll add connection: fd:10 ev:80002005 +2025/08/19 13:59:03 [debug] 398217#398217: *26 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #27 +2025/08/19 13:59:03 [debug] 398217#398217: *26 connected +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream connect: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream send request +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream send request body +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer buf fl:0 s:1304 +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer buf fl:0 s:184 +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer buf fl:0 s:8 +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer buf fl:0 s:112 +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer buf fl:0 s:8 +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer in: 000061F3F26BCC00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 writev: 1616 of 1616 +2025/08/19 13:59:03 [debug] 398217#398217: *26 chain writer out: 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer add: 10: 60000:193136288 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http request count:2 blk:0 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http run request: "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream check client, write event:1, "/upload" +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C8 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream request: "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream dummy handler +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 2 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C8 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream request: "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream process header +2025/08/19 13:59:03 [debug] 398217#398217: *26 malloc: 000061F3F26B1150:4096 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: eof:1, avail:-1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: fd:10 1664 of 4096 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 01 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 06 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 01 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 06 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 5D +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 03 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record length: 1629 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "LOG: [2025-08-19 13:59:03] PUT /upload - Auth: pending - Status: 0" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJkMzU4M2EyODRmM2UyMzE5ZTkxMjlkYzY0ZjI2NWFkODlhODY1NTM0MmEzNjhiMjY0YzU3ZWUwZTM1NTQyZDJmIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYzNDMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIwYzQzNTFjZTE3YmY3NTlmYjMyOGQ2ZGIwNTBkNGI3M2U2ZDIwNGU4YTJhZjgyOTcxY2Y1ZTRlM2QwZTQ0NjgwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTk0MiJdXSwiY29udGVudCI6IiIsInNpZyI6IjQzYjZhNzkzZGQ5NGViNWExYTU2YjM0YTVmN2RkZTY1M2E2NjQxNGVmMDdlOTA0MjAyOWFlYWQ1MmRhMGRkMGE3YzU1Y2M4ZWUzMjM0NTk0N2Y5OTE2ZDYwNDc3ODc3NTVjOWMwNmYzMGEwZmY3MzQzNzYyMGU5NzQ5ZmNjNGNiIn0=" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: Authenticating request - method: PUT, hash: null" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiJkMzU4M2EyODRmM2UyMzE5ZTkxMjlkYzY0ZjI2NWFkODlhODY1NTM0MmEzNjhiMjY0YzU3ZWUw..." +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"d3583a284f3e2319e9129dc64f265ad89a8655342a368b264c57ee0e35542d2f","pubkey":"79be..." +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "DEBUG: Nostr event validation failed: -32 (Event has invalid public key)" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header: "Content-Type: application/json" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi parser: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi header done +2025/08/19 13:59:03 [debug] 398217#398217: *26 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *26 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:59:03 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 13:59:03] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJkMzU4M2EyODRmM2UyMzE5ZTkxMjlkYzY0ZjI2NWFkODlhODY1NTM0MmEzNjhiMjY0YzU3ZWUwZTM1NTQyZDJmIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjYzNDMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIwYzQzNTFjZTE3YmY3NTlmYjMyOGQ2ZGIwNTBkNGI3M2U2ZDIwNGU4YTJhZjgyOTcxY2Y1ZTRlM2QwZTQ0NjgwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYyOTk0MiJdXSwiY29udGVudCI6IiIsInNpZyI6IjQzYjZhNzkzZGQ5NGViNWExYTU2YjM0YTVmN2RkZTY1M2E2NjQxNGVmMDdlOTA0MjAyOWFlYWQ1MmRhMGRkMGE3YzU1Y2M4ZWUzMjM0NTk0N2Y5OTE2ZDYwNDc3ODc3NTVjOWMwNmYzMGEwZmY3MzQzNzYyMGU5NzQ5ZmNjNGNiIn0= +DEBUG: Authenticating request - method: PUT, hash: null +DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiJkMzU4M2EyODRmM2UyMzE5ZTkxMjlkYzY0ZjI2NWFkODlhODY1NTM0MmEzNjhiMjY0YzU3ZWUw... +DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"d3583a284f3e2319e9129dc64f265ad89a8655342a368b264c57ee0e35542d2f","pubkey":"79be... +DEBUG: Nostr event validation failed: -32 (Event has invalid public key) + +2025/08/19 13:59:03 [debug] 398217#398217: *26 write new buf t:1 f:0 000061F3F26B2180, pos 000061F3F26B2180, size: 1493 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter: l:0 f:0 s:1493 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter limit 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 writev: 1493 of 1493 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http cacheable: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream process upstream +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe read upstream: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe preread: 284 +2025/08/19 13:59:03 [debug] 398217#398217: *26 readv: eof:1, avail:0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 readv: 1, last:2432 +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe recv chain: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe length: -1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 input buf #0 000061F3F26B16B4 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 01 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 06 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 01 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record length: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi closed stdout +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 01 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 03 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 01 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 08 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record byte: 00 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi record length: 8 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http fastcgi sent end request +2025/08/19 13:59:03 [debug] 398217#398217: *26 input buf 000061F3F26B16B4 257 +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe write downstream: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe write downstream flush in +2025/08/19 13:59:03 [debug] 398217#398217: *26 http output filter "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http copy filter: "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http postpone filter "/upload?" 000061F3F26BCBE0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http chunk: 257 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write new buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write new buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter: l:0 f:0 s:264 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http copy filter: 0 "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 pipe write downstream done +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer: 10, old: 193136288, new: 193136290 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream exit: 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *26 finalize http upstream request: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 finalize http fastcgi request +2025/08/19 13:59:03 [debug] 398217#398217: *26 free rr peer 1 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 close http upstream connection: 10 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F268FF20, unused: 48 +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer del: 10: 193136288 +2025/08/19 13:59:03 [debug] 398217#398217: *26 reusable connection: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http upstream temp fd: -1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http output filter "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http copy filter: "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http postpone filter "/upload?" 00007FFE4490F9F0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http chunk: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write old buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write old buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter: l:1 f:0 s:269 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter limit 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 writev: 269 of 269 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http write filter 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http copy filter: 0 "/upload?" +2025/08/19 13:59:03 [debug] 398217#398217: *26 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 set http keepalive handler +2025/08/19 13:59:03 [debug] 398217#398217: *26 http close request +2025/08/19 13:59:03 [debug] 398217#398217: *26 http log handler +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26B1150 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26C5A20, unused: 3 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26BBD90, unused: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26B0140, unused: 54 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26B2160, unused: 2202 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26A90A0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 hc free: 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *26 hc busy: 0000000000000000 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 tcp_nodelay +2025/08/19 13:59:03 [debug] 398217#398217: *26 reusable connection: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer add: 6: 65000:193141290 +2025/08/19 13:59:03 [debug] 398217#398217: *26 post event 000061F3F26F7760 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:59:03 [debug] 398217#398217: posted event 000061F3F26F7760 +2025/08/19 13:59:03 [debug] 398217#398217: *26 delete posted event 000061F3F26F7760 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http keepalive handler +2025/08/19 13:59:03 [debug] 398217#398217: *26 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: eof:0, avail:0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26A90A0 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 http keepalive handler +2025/08/19 13:59:03 [debug] 398217#398217: *26 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: eof:1, avail:-1 +2025/08/19 13:59:03 [debug] 398217#398217: *26 recv: fd:6 0 of 1024 +2025/08/19 13:59:03 [info] 398217#398217: *26 client 127.0.0.1 closed keepalive connection +2025/08/19 13:59:03 [debug] 398217#398217: *26 close http connection: 6 +2025/08/19 13:59:03 [debug] 398217#398217: *26 event timer del: 6: 193141290 +2025/08/19 13:59:03 [debug] 398217#398217: *26 reusable connection: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26A90A0 +2025/08/19 13:59:03 [debug] 398217#398217: *26 free: 000061F3F26A6840, unused: 120 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 2 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: -1 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 13:59:03 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 13:59:03 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *28 accept: 127.0.0.1:33946 fd:6 +2025/08/19 13:59:03 [debug] 398217#398217: *28 event timer add: 6: 60000:193136304 +2025/08/19 13:59:03 [debug] 398217#398217: *28 reusable connection: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 12 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http wait request handler +2025/08/19 13:59:03 [debug] 398217#398217: *28 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:03 [debug] 398217#398217: *28 recv: eof:0, avail:-1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 recv: fd:6 142 of 1024 +2025/08/19 13:59:03 [debug] 398217#398217: *28 reusable connection: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http process request line +2025/08/19 13:59:03 [debug] 398217#398217: *28 http request line: "GET /0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680 HTTP/1.1" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http uri: "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http args: "" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http exten: "" +2025/08/19 13:59:03 [debug] 398217#398217: *28 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http process request header line +2025/08/19 13:59:03 [debug] 398217#398217: *28 http header: "Host: localhost:9001" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http header: "User-Agent: curl/8.15.0" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http header: "Accept: */*" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http header done +2025/08/19 13:59:03 [debug] 398217#398217: *28 event timer del: 6: 193136304 +2025/08/19 13:59:03 [debug] 398217#398217: *28 generic phase: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 rewrite phase: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 test location: "/health" +2025/08/19 13:59:03 [debug] 398217#398217: *28 test location: "/debug/list" +2025/08/19 13:59:03 [debug] 398217#398217: *28 test location: "/" +2025/08/19 13:59:03 [debug] 398217#398217: *28 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 13:59:03 [debug] 398217#398217: *28 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http cl:-1 max:104857600 +2025/08/19 13:59:03 [debug] 398217#398217: *28 rewrite phase: 3 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http script var +2025/08/19 13:59:03 [debug] 398217#398217: *28 http script var: "GET" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http script value: "DELETE" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http script not equal +2025/08/19 13:59:03 [debug] 398217#398217: *28 http script if +2025/08/19 13:59:03 [debug] 398217#398217: *28 http finalize request: 404, "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" a:1, c:1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http special response: 404, "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http set discard body +2025/08/19 13:59:03 [debug] 398217#398217: *28 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 17:59:03 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 13:59:03 [debug] 398217#398217: *28 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http write filter: l:0 f:0 s:164 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http output filter "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http copy filter: "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http postpone filter "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" 000061F3F26BC300 +2025/08/19 13:59:03 [debug] 398217#398217: *28 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4580, size: 100 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4C80, size: 62 file: 0, size: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http write filter: l:1 f:0 s:326 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http write filter limit 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 writev: 326 of 326 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http write filter 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http copy filter: 0 "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" +2025/08/19 13:59:03 [debug] 398217#398217: *28 http finalize request: 0, "/0c4351ce17bf759fb328d6db050d4b73e6d204e8a2af82971cf5e4e3d0e44680?" a:1, c:1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 set http keepalive handler +2025/08/19 13:59:03 [debug] 398217#398217: *28 http close request +2025/08/19 13:59:03 [debug] 398217#398217: *28 http log handler +2025/08/19 13:59:03 [debug] 398217#398217: *28 free: 000061F3F26C5A20, unused: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 free: 000061F3F26BBD90, unused: 2456 +2025/08/19 13:59:03 [debug] 398217#398217: *28 free: 000061F3F26A90A0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 hc free: 0000000000000000 +2025/08/19 13:59:03 [debug] 398217#398217: *28 hc busy: 0000000000000000 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 tcp_nodelay +2025/08/19 13:59:03 [debug] 398217#398217: *28 reusable connection: 1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 event timer add: 6: 65000:193141304 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 0 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 13:59:03 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 http keepalive handler +2025/08/19 13:59:03 [debug] 398217#398217: *28 malloc: 000061F3F26A90A0:1024 +2025/08/19 13:59:03 [debug] 398217#398217: *28 recv: eof:1, avail:-1 +2025/08/19 13:59:03 [debug] 398217#398217: *28 recv: fd:6 0 of 1024 +2025/08/19 13:59:03 [info] 398217#398217: *28 client 127.0.0.1 closed keepalive connection +2025/08/19 13:59:03 [debug] 398217#398217: *28 close http connection: 6 +2025/08/19 13:59:03 [debug] 398217#398217: *28 event timer del: 6: 193141304 +2025/08/19 13:59:03 [debug] 398217#398217: *28 reusable connection: 0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 free: 000061F3F26A90A0 +2025/08/19 13:59:03 [debug] 398217#398217: *28 free: 000061F3F26A6840, unused: 136 +2025/08/19 13:59:03 [debug] 398217#398217: timer delta: 1 +2025/08/19 13:59:03 [debug] 398217#398217: worker cycle +2025/08/19 13:59:03 [debug] 398217#398217: epoll timer: -1 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 14:00:27 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:00:27 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *29 accept: 127.0.0.1:45064 fd:6 +2025/08/19 14:00:27 [debug] 398217#398217: *29 event timer add: 6: 60000:193220453 +2025/08/19 14:00:27 [debug] 398217#398217: *29 reusable connection: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 84148 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http wait request handler +2025/08/19 14:00:27 [debug] 398217#398217: *29 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *29 recv: eof:0, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 recv: fd:6 84 of 1024 +2025/08/19 14:00:27 [debug] 398217#398217: *29 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http process request line +2025/08/19 14:00:27 [debug] 398217#398217: *29 http request line: "GET /health HTTP/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http uri: "/health" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http args: "" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http exten: "" +2025/08/19 14:00:27 [debug] 398217#398217: *29 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http process request header line +2025/08/19 14:00:27 [debug] 398217#398217: *29 http header: "Host: localhost:9001" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http header: "Accept: */*" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http header done +2025/08/19 14:00:27 [debug] 398217#398217: *29 event timer del: 6: 193220453 +2025/08/19 14:00:27 [debug] 398217#398217: *29 generic phase: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 rewrite phase: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 test location: "/health" +2025/08/19 14:00:27 [debug] 398217#398217: *29 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *29 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:00:27 [debug] 398217#398217: *29 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *29 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *29 using configuration "/health" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http cl:-1 max:104857600 +2025/08/19 14:00:27 [debug] 398217#398217: *29 rewrite phase: 3 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http set discard body +2025/08/19 14:00:27 [debug] 398217#398217: *29 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:00:27 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 14:00:27 [debug] 398217#398217: *29 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http write filter: l:0 f:0 s:196 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http output filter "/health?" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http copy filter: "/health?" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http postpone filter "/health?" 00007FFE4490F940 +2025/08/19 14:00:27 [debug] 398217#398217: *29 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 196 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 write new buf t:0 f:0 0000000000000000, pos 000061F3F26E3B32, size: 3 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http write filter: l:1 f:0 s:199 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http write filter limit 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 writev: 199 of 199 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http write filter 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http copy filter: 0 "/health?" +2025/08/19 14:00:27 [debug] 398217#398217: *29 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 set http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *29 http close request +2025/08/19 14:00:27 [debug] 398217#398217: *29 http log handler +2025/08/19 14:00:27 [debug] 398217#398217: *29 free: 000061F3F26C5A20, unused: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 free: 000061F3F26BBD90, unused: 2736 +2025/08/19 14:00:27 [debug] 398217#398217: *29 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 hc free: 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *29 hc busy: 0000000000000000 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 tcp_nodelay +2025/08/19 14:00:27 [debug] 398217#398217: *29 reusable connection: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 event timer add: 6: 65000:193225454 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 1 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *29 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *29 recv: eof:1, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *29 recv: fd:6 0 of 1024 +2025/08/19 14:00:27 [info] 398217#398217: *29 client 127.0.0.1 closed keepalive connection +2025/08/19 14:00:27 [debug] 398217#398217: *29 close http connection: 6 +2025/08/19 14:00:27 [debug] 398217#398217: *29 event timer del: 6: 193225454 +2025/08/19 14:00:27 [debug] 398217#398217: *29 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: *29 free: 000061F3F26A6840, unused: 136 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 1 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: -1 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 14:00:27 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:00:27 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *30 accept: 127.0.0.1:45078 fd:6 +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer add: 6: 60000:193220780 +2025/08/19 14:00:27 [debug] 398217#398217: *30 reusable connection: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 325 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http wait request handler +2025/08/19 14:00:27 [debug] 398217#398217: *30 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: eof:0, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: fd:6 1024 of 1024 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: avail:112 +2025/08/19 14:00:27 [debug] 398217#398217: *30 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http process request line +2025/08/19 14:00:27 [debug] 398217#398217: *30 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http uri: "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http args: "" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http exten: "" +2025/08/19 14:00:27 [debug] 398217#398217: *30 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http process request header line +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "Host: localhost:9001" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "Accept: */*" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI1NjQzNDM2NDZhNzliMzJmNjg1Mzg5ZDMyZDM1ODRlZDgyNDY3NTBkNTg1MDM3ZDgxYjVjZTEwYmQxMjJiNTQ2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjY0MjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4MTNjZGZmNDExMmY5ODBkOGRkMjhhMzJlYjhhNmNlMzM3OTVhMjdjMDExMTJjMThmOTRjYTgzYTljNGE2YzIwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDAyNyJdXSwiY29udGVudCI6IiIsInNpZyI6ImRlMDlkZTExMmJjMjFiYTAwOGM2N2U2MzBkMTliNzhhYWUxMjUwM2YxNzQxODliYmRlYzgzYzZlNzRjY2QxNDZjM2QxYjgwYjE3ZWI4Y2ZkNjA1YmQ4MzY0ZDlhNzU0ODdmOGRhYWExMjIyY2JiNDFmYjNlODBjYzY2ZWViYmM2In0=" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "Content-Type: text/plain" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "Content-Disposition: attachment; filename="test_blob_1755626427.txt"" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header: "Content-Length: 296" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http header done +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer del: 6: 193220780 +2025/08/19 14:00:27 [debug] 398217#398217: *30 generic phase: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 rewrite phase: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 test location: "/health" +2025/08/19 14:00:27 [debug] 398217#398217: *30 test location: "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *30 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:00:27 [debug] 398217#398217: *30 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *30 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *30 using configuration "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http cl:296 max:104857600 +2025/08/19 14:00:27 [debug] 398217#398217: *30 rewrite phase: 3 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "PUT" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script regex: "^(PUT)$" +2025/08/19 14:00:27 [notice] 398217#398217: *30 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script if +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script if: false +2025/08/19 14:00:27 [debug] 398217#398217: *30 post rewrite phase: 4 +2025/08/19 14:00:27 [debug] 398217#398217: *30 generic phase: 5 +2025/08/19 14:00:27 [debug] 398217#398217: *30 generic phase: 6 +2025/08/19 14:00:27 [debug] 398217#398217: *30 generic phase: 7 +2025/08/19 14:00:27 [debug] 398217#398217: *30 access phase: 8 +2025/08/19 14:00:27 [debug] 398217#398217: *30 access phase: 9 +2025/08/19 14:00:27 [debug] 398217#398217: *30 access phase: 10 +2025/08/19 14:00:27 [debug] 398217#398217: *30 post access phase: 11 +2025/08/19 14:00:27 [debug] 398217#398217: *30 generic phase: 12 +2025/08/19 14:00:27 [debug] 398217#398217: *30 generic phase: 13 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http client request body preread 184 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http request body content length filter +2025/08/19 14:00:27 [debug] 398217#398217: *30 http body new buf t:1 f:0 000061F3F26A93E8, pos 000061F3F26A93E8, size: 184 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http read client request body +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: eof:0, avail:112 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: fd:6 112 of 112 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: avail:0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http client request body recv 112 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http body new buf t:1 f:0 000061F3F26BC820, pos 000061F3F26BC820, size: 112 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http client request body rest 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http init upstream, client timer: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:00:27 [debug] 398217#398217: *30 posix_memalign: 000061F3F26B0140:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "QUERY_STRING" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "QUERY_STRING: " +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "REQUEST_METHOD" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "PUT" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "CONTENT_TYPE" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "text/plain" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "CONTENT_LENGTH" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "296" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SCRIPT_NAME" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "REQUEST_URI" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "DOCUMENT_URI" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "./blobs" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "HTTP/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "REQUEST_SCHEME" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "http" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "CGI/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "nginx/" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "1.18.0" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "REMOTE_ADDR" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "127.0.0.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "REMOTE_PORT" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "45078" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "REMOTE_PORT: 45078" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SERVER_ADDR" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "127.0.0.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SERVER_PORT" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "9001" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SERVER_NAME" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "localhost" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "REDIRECT_STATUS" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "200" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script var: "./blobs" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http script copy: "/ginxsom.fcgi" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI1NjQzNDM2NDZhNzliMzJmNjg1Mzg5ZDMyZDM1ODRlZDgyNDY3NTBkNTg1MDM3ZDgxYjVjZTEwYmQxMjJiNTQ2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjY0MjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4MTNjZGZmNDExMmY5ODBkOGRkMjhhMzJlYjhhNmNlMzM3OTVhMjdjMDExMTJjMThmOTRjYTgzYTljNGE2YzIwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDAyNyJdXSwiY29udGVudCI6IiIsInNpZyI6ImRlMDlkZTExMmJjMjFiYTAwOGM2N2U2MzBkMTliNzhhYWUxMjUwM2YxNzQxODliYmRlYzgzYzZlNzRjY2QxNDZjM2QxYjgwYjE3ZWI4Y2ZkNjA1YmQ4MzY0ZDlhNzU0ODdmOGRhYWExMjIyY2JiNDFmYjNlODBjYzY2ZWViYmM2In0=" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755626427.txt"" +2025/08/19 14:00:27 [debug] 398217#398217: *30 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http cleanup add: 000061F3F26BCB70 +2025/08/19 14:00:27 [debug] 398217#398217: *30 get rr peer, try: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 stream socket 10 +2025/08/19 14:00:27 [debug] 398217#398217: *30 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:00:27 [debug] 398217#398217: *30 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #31 +2025/08/19 14:00:27 [debug] 398217#398217: *30 connected +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream connect: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 posix_memalign: 000061F3F268FF20:128 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream send request +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream send request body +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer buf fl:0 s:1304 +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer buf fl:0 s:184 +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer buf fl:0 s:8 +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer buf fl:0 s:112 +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer buf fl:0 s:8 +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer in: 000061F3F26BCC00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 writev: 1616 of 1616 +2025/08/19 14:00:27 [debug] 398217#398217: *30 chain writer out: 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer add: 10: 60000:193220781 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http request count:2 blk:0 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 1 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:0004 d:00007877C5D891E0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http run request: "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream check client, write event:1, "/upload" +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:10 ev:0004 d:00007877C5D892C9 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream request: "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream dummy handler +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 2 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 59998 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:10 ev:2005 d:00007877C5D892C9 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream request: "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream process header +2025/08/19 14:00:27 [debug] 398217#398217: *30 malloc: 000061F3F26B1150:4096 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: eof:1, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: fd:10 1664 of 4096 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 01 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 06 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 01 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 06 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 5D +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 03 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record length: 1629 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "LOG: [2025-08-19 14:00:27] PUT /upload - Auth: pending - Status: 0" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI1NjQzNDM2NDZhNzliMzJmNjg1Mzg5ZDMyZDM1ODRlZDgyNDY3NTBkNTg1MDM3ZDgxYjVjZTEwYmQxMjJiNTQ2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjY0MjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4MTNjZGZmNDExMmY5ODBkOGRkMjhhMzJlYjhhNmNlMzM3OTVhMjdjMDExMTJjMThmOTRjYTgzYTljNGE2YzIwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDAyNyJdXSwiY29udGVudCI6IiIsInNpZyI6ImRlMDlkZTExMmJjMjFiYTAwOGM2N2U2MzBkMTliNzhhYWUxMjUwM2YxNzQxODliYmRlYzgzYzZlNzRjY2QxNDZjM2QxYjgwYjE3ZWI4Y2ZkNjA1YmQ4MzY0ZDlhNzU0ODdmOGRhYWExMjIyY2JiNDFmYjNlODBjYzY2ZWViYmM2In0=" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: Authenticating request - method: PUT, hash: null" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiI1NjQzNDM2NDZhNzliMzJmNjg1Mzg5ZDMyZDM1ODRlZDgyNDY3NTBkNTg1MDM3ZDgxYjVjZTEw..." +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"564343646a79b32f685389d32d3584ed8246750d585037d81b5ce10bd122b546","pubkey":"79be..." +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "DEBUG: Nostr event validation failed: -32 (Event has invalid public key)" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header: "Content-Type: application/json" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi parser: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi header done +2025/08/19 14:00:27 [debug] 398217#398217: *30 posix_memalign: 000061F3F26B2160:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *30 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:00:27 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 14:00:27] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI1NjQzNDM2NDZhNzliMzJmNjg1Mzg5ZDMyZDM1ODRlZDgyNDY3NTBkNTg1MDM3ZDgxYjVjZTEwYmQxMjJiNTQ2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjY0MjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI4MTNjZGZmNDExMmY5ODBkOGRkMjhhMzJlYjhhNmNlMzM3OTVhMjdjMDExMTJjMThmOTRjYTgzYTljNGE2YzIwIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDAyNyJdXSwiY29udGVudCI6IiIsInNpZyI6ImRlMDlkZTExMmJjMjFiYTAwOGM2N2U2MzBkMTliNzhhYWUxMjUwM2YxNzQxODliYmRlYzgzYzZlNzRjY2QxNDZjM2QxYjgwYjE3ZWI4Y2ZkNjA1YmQ4MzY0ZDlhNzU0ODdmOGRhYWExMjIyY2JiNDFmYjNlODBjYzY2ZWViYmM2In0= +DEBUG: Authenticating request - method: PUT, hash: null +DEBUG: Base64 event from header: eyJraW5kIjoyNDI0MiwiaWQiOiI1NjQzNDM2NDZhNzliMzJmNjg1Mzg5ZDMyZDM1ODRlZDgyNDY3NTBkNTg1MDM3ZDgxYjVjZTEw... +DEBUG: Parsed authorization header, extracted JSON: {"kind":24242,"id":"564343646a79b32f685389d32d3584ed8246750d585037d81b5ce10bd122b546","pubkey":"79be... +DEBUG: Nostr event validation failed: -32 (Event has invalid public key) + +2025/08/19 14:00:27 [debug] 398217#398217: *30 write new buf t:1 f:0 000061F3F26B2180, pos 000061F3F26B2180, size: 1493 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter: l:0 f:0 s:1493 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter limit 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 writev: 1493 of 1493 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http cacheable: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream process upstream +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe read upstream: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe preread: 284 +2025/08/19 14:00:27 [debug] 398217#398217: *30 readv: eof:1, avail:0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 readv: 1, last:2432 +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe recv chain: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe buf free s:0 t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 284 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe length: -1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 input buf #0 000061F3F26B16B4 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 01 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 06 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 01 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record length: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi closed stdout +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 01 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 03 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 01 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 08 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record byte: 00 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi record length: 8 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http fastcgi sent end request +2025/08/19 14:00:27 [debug] 398217#398217: *30 input buf 000061F3F26B16B4 257 +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe write downstream: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe write downstream flush in +2025/08/19 14:00:27 [debug] 398217#398217: *30 http output filter "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http copy filter: "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http postpone filter "/upload?" 000061F3F26BCBE0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http chunk: 257 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write new buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write new buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter: l:0 f:0 s:264 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http copy filter: 0 "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 pipe write downstream done +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer: 10, old: 193220781, new: 193220783 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream exit: 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *30 finalize http upstream request: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 finalize http fastcgi request +2025/08/19 14:00:27 [debug] 398217#398217: *30 free rr peer 1 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 close http upstream connection: 10 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F268FF20, unused: 48 +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer del: 10: 193220781 +2025/08/19 14:00:27 [debug] 398217#398217: *30 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http upstream temp fd: -1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http output filter "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http copy filter: "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http postpone filter "/upload?" 00007FFE4490F9F0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http chunk: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write old buf t:1 f:0 000061F3F26B10F8, pos 000061F3F26B10F8, size: 5 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write old buf t:1 f:0 000061F3F26B1150, pos 000061F3F26B16B4, size: 257 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write old buf t:0 f:0 0000000000000000, pos 000061F3D7D652E8, size: 2 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 write new buf t:0 f:0 0000000000000000, pos 000061F3D7D652E5, size: 5 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter: l:1 f:0 s:269 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter limit 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 writev: 269 of 269 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http write filter 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http copy filter: 0 "/upload?" +2025/08/19 14:00:27 [debug] 398217#398217: *30 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 set http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *30 http close request +2025/08/19 14:00:27 [debug] 398217#398217: *30 http log handler +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26B1150 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26C5A20, unused: 3 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26BBD90, unused: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26B0140, unused: 54 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26B2160, unused: 2202 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 hc free: 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *30 hc busy: 0000000000000000 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 tcp_nodelay +2025/08/19 14:00:27 [debug] 398217#398217: *30 reusable connection: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer add: 6: 65000:193225783 +2025/08/19 14:00:27 [debug] 398217#398217: *30 post event 000061F3F26F7760 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 0 +2025/08/19 14:00:27 [debug] 398217#398217: posted event 000061F3F26F7760 +2025/08/19 14:00:27 [debug] 398217#398217: *30 delete posted event 000061F3F26F7760 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *30 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: eof:0, avail:0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:2005 d:00007877C5D891E0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *30 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: eof:1, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *30 recv: fd:6 0 of 1024 +2025/08/19 14:00:27 [info] 398217#398217: *30 client 127.0.0.1 closed keepalive connection +2025/08/19 14:00:27 [debug] 398217#398217: *30 close http connection: 6 +2025/08/19 14:00:27 [debug] 398217#398217: *30 event timer del: 6: 193225783 +2025/08/19 14:00:27 [debug] 398217#398217: *30 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: *30 free: 000061F3F26A6840, unused: 120 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 1 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: -1 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:5 ev:0001 d:00007877C5D89010 +2025/08/19 14:00:27 [debug] 398217#398217: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:00:27 [debug] 398217#398217: posix_memalign: 000061F3F26A6840:512 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *32 accept: 127.0.0.1:45092 fd:6 +2025/08/19 14:00:27 [debug] 398217#398217: *32 event timer add: 6: 60000:193220796 +2025/08/19 14:00:27 [debug] 398217#398217: *32 reusable connection: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 12 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 60000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:0001 d:00007877C5D891E1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http wait request handler +2025/08/19 14:00:27 [debug] 398217#398217: *32 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *32 recv: eof:0, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 recv: fd:6 142 of 1024 +2025/08/19 14:00:27 [debug] 398217#398217: *32 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 posix_memalign: 000061F3F26C5A20:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http process request line +2025/08/19 14:00:27 [debug] 398217#398217: *32 http request line: "GET /813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20 HTTP/1.1" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http uri: "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http args: "" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http exten: "" +2025/08/19 14:00:27 [debug] 398217#398217: *32 posix_memalign: 000061F3F26BBD90:4096 @16 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http process request header line +2025/08/19 14:00:27 [debug] 398217#398217: *32 http header: "Host: localhost:9001" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http header: "Accept: */*" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http header done +2025/08/19 14:00:27 [debug] 398217#398217: *32 event timer del: 6: 193220796 +2025/08/19 14:00:27 [debug] 398217#398217: *32 generic phase: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 rewrite phase: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 test location: "/health" +2025/08/19 14:00:27 [debug] 398217#398217: *32 test location: "/debug/list" +2025/08/19 14:00:27 [debug] 398217#398217: *32 test location: "/" +2025/08/19 14:00:27 [debug] 398217#398217: *32 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *32 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http cl:-1 max:104857600 +2025/08/19 14:00:27 [debug] 398217#398217: *32 rewrite phase: 3 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http script var +2025/08/19 14:00:27 [debug] 398217#398217: *32 http script var: "GET" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http script value: "DELETE" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http script not equal +2025/08/19 14:00:27 [debug] 398217#398217: *32 http script if +2025/08/19 14:00:27 [debug] 398217#398217: *32 http finalize request: 404, "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" a:1, c:1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http special response: 404, "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http set discard body +2025/08/19 14:00:27 [debug] 398217#398217: *32 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:00:27 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 14:00:27 [debug] 398217#398217: *32 write new buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http write filter: l:0 f:0 s:164 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http output filter "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http copy filter: "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http postpone filter "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" 000061F3F26BC300 +2025/08/19 14:00:27 [debug] 398217#398217: *32 write old buf t:1 f:0 000061F3F26BC170, pos 000061F3F26BC170, size: 164 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4580, size: 100 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 write new buf t:0 f:0 0000000000000000, pos 000061F3D7DA4C80, size: 62 file: 0, size: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http write filter: l:1 f:0 s:326 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http write filter limit 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 writev: 326 of 326 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http write filter 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http copy filter: 0 "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" +2025/08/19 14:00:27 [debug] 398217#398217: *32 http finalize request: 0, "/813cdff4112f980d8dd28a32eb8a6ce33795a27c01112c18f94ca83a9c4a6c20?" a:1, c:1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 set http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *32 http close request +2025/08/19 14:00:27 [debug] 398217#398217: *32 http log handler +2025/08/19 14:00:27 [debug] 398217#398217: *32 free: 000061F3F26C5A20, unused: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 free: 000061F3F26BBD90, unused: 2456 +2025/08/19 14:00:27 [debug] 398217#398217: *32 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 hc free: 0000000000000000 +2025/08/19 14:00:27 [debug] 398217#398217: *32 hc busy: 0000000000000000 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 tcp_nodelay +2025/08/19 14:00:27 [debug] 398217#398217: *32 reusable connection: 1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 event timer add: 6: 65000:193225796 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 0 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: 65000 +2025/08/19 14:00:27 [debug] 398217#398217: epoll: fd:6 ev:2001 d:00007877C5D891E1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 http keepalive handler +2025/08/19 14:00:27 [debug] 398217#398217: *32 malloc: 000061F3F26A90A0:1024 +2025/08/19 14:00:27 [debug] 398217#398217: *32 recv: eof:1, avail:-1 +2025/08/19 14:00:27 [debug] 398217#398217: *32 recv: fd:6 0 of 1024 +2025/08/19 14:00:27 [info] 398217#398217: *32 client 127.0.0.1 closed keepalive connection +2025/08/19 14:00:27 [debug] 398217#398217: *32 close http connection: 6 +2025/08/19 14:00:27 [debug] 398217#398217: *32 event timer del: 6: 193225796 +2025/08/19 14:00:27 [debug] 398217#398217: *32 reusable connection: 0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 free: 000061F3F26A90A0 +2025/08/19 14:00:27 [debug] 398217#398217: *32 free: 000061F3F26A6840, unused: 136 +2025/08/19 14:00:27 [debug] 398217#398217: timer delta: 1 +2025/08/19 14:00:27 [debug] 398217#398217: worker cycle +2025/08/19 14:00:27 [debug] 398217#398217: epoll timer: -1 +2025/08/19 14:11:35 [notice] 398216#398216: signal 15 (SIGTERM) received from 447374, exiting +2025/08/19 14:11:35 [debug] 398216#398216: wake up, sigio 0 +2025/08/19 14:11:35 [debug] 398216#398216: child: 0 398217 e:0 t:0 d:0 r:1 j:0 +2025/08/19 14:11:35 [debug] 398216#398216: termination cycle: 50 +2025/08/19 14:11:35 [debug] 398216#398216: sigsuspend +2025/08/19 14:11:35 [debug] 398217#398217: epoll: fd:7 ev:0001 d:00007877C5D890F8 +2025/08/19 14:11:35 [debug] 398217#398217: channel handler +2025/08/19 14:11:35 [debug] 398217#398217: channel: 32 +2025/08/19 14:11:35 [debug] 398217#398217: channel command: 4 +2025/08/19 14:11:35 [debug] 398217#398217: channel: -2 +2025/08/19 14:11:35 [debug] 398217#398217: timer delta: 667624 +2025/08/19 14:11:35 [notice] 398217#398217: exiting +2025/08/19 14:11:35 [debug] 398217#398217: flush files +2025/08/19 14:11:35 [debug] 398217#398217: run cleanup: 000061F3F26F4A70 +2025/08/19 14:11:35 [debug] 398217#398217: run cleanup: 000061F3F26E7A08 +2025/08/19 14:11:35 [debug] 398217#398217: cleanup resolver +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26F5DD0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26E8BD0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26C7B40 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26C6A30 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26C0A00 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26BF940 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26BE880 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26BD7C0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26B5160 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26AC130, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26B6570, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26C1A10, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26C8B50, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26CCB60, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26D0B70, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26D4B80, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26D8B90, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26DCBA0, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26E0BB0, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26E4BC0, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26E9DA0, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26EDDB0, unused: 0 +2025/08/19 14:11:35 [debug] 398217#398217: free: 000061F3F26F1DC0, unused: 4920 +2025/08/19 14:11:35 [notice] 398217#398217: exit +2025/08/19 14:11:35 [notice] 398216#398216: signal 17 (SIGCHLD) received from 398217 +2025/08/19 14:11:35 [notice] 398216#398216: worker process 398217 exited with code 0 +2025/08/19 14:11:35 [debug] 398216#398216: shmtx forced unlock +2025/08/19 14:11:35 [debug] 398216#398216: wake up, sigio 3 +2025/08/19 14:11:35 [debug] 398216#398216: reap children +2025/08/19 14:11:35 [debug] 398216#398216: child: 0 398217 e:1 t:1 d:0 r:1 j:0 +2025/08/19 14:11:35 [notice] 398216#398216: exit +2025/08/19 14:11:35 [debug] 398216#398216: close listening 0.0.0.0:9001 #5 +2025/08/19 14:11:35 [debug] 398216#398216: run cleanup: 000061F3F26E7A08 +2025/08/19 14:11:35 [debug] 398216#398216: cleanup resolver +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26F5DD0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26E8BD0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26C7B40 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26C6A30 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26C0A00 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26BF940 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26BE880 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26BD7C0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26B5160 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26AC130, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26B6570, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26C1A10, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26C8B50, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26CCB60, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26D0B70, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26D4B80, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26D8B90, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26DCBA0, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26E0BB0, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26E4BC0, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26E9DA0, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26EDDB0, unused: 0 +2025/08/19 14:11:35 [debug] 398216#398216: free: 000061F3F26F1DC0, unused: 4951 +2025/08/19 14:11:35 [debug] 447375#447375: bind() 0.0.0.0:9001 #5 +2025/08/19 14:11:35 [notice] 447375#447375: using the "epoll" event method +2025/08/19 14:11:35 [debug] 447375#447375: counter: 00007F2328BAC080, 1 +2025/08/19 14:11:35 [notice] 447375#447375: nginx/1.18.0 (Ubuntu) +2025/08/19 14:11:35 [notice] 447375#447375: OS: Linux 6.12.10-76061203-generic +2025/08/19 14:11:35 [notice] 447375#447375: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 14:11:35 [debug] 447376#447375: write: 6, 00007FFE17FC2990, 7, 0 +2025/08/19 14:11:35 [debug] 447376#447376: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 14:11:35 [notice] 447376#447376: start worker processes +2025/08/19 14:11:35 [debug] 447376#447376: channel 6:7 +2025/08/19 14:11:35 [notice] 447376#447376: start worker process 447377 +2025/08/19 14:11:35 [debug] 447376#447376: sigsuspend +2025/08/19 14:11:35 [debug] 447377#447377: add cleanup: 0000556F9E20CA70 +2025/08/19 14:11:35 [debug] 447377#447377: malloc: 0000556F9E1BFBD0:8 +2025/08/19 14:11:35 [debug] 447377#447377: notify eventfd: 9 +2025/08/19 14:11:35 [debug] 447377#447377: testing the EPOLLRDHUP flag: success +2025/08/19 14:11:35 [debug] 447377#447377: malloc: 0000556F9E1D2580:6144 +2025/08/19 14:11:35 [debug] 447377#447377: malloc: 00007F23289A4010:237568 +2025/08/19 14:11:35 [debug] 447377#447377: malloc: 0000556F9E20F6A0:98304 +2025/08/19 14:11:35 [debug] 447377#447377: malloc: 0000556F9E2276B0:98304 +2025/08/19 14:11:35 [debug] 447377#447377: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:11:35 [debug] 447377#447377: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:11:35 [debug] 447377#447377: setproctitle: "nginx: worker process" +2025/08/19 14:11:35 [debug] 447377#447377: worker cycle +2025/08/19 14:11:35 [debug] 447377#447377: epoll timer: -1 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:5 ev:0001 d:00007F23289A4010 +2025/08/19 14:12:19 [debug] 447377#447377: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:12:19 [debug] 447377#447377: posix_memalign: 0000556F9E1BE840:512 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *1 accept: 127.0.0.1:55808 fd:6 +2025/08/19 14:12:19 [debug] 447377#447377: *1 event timer add: 6: 60000:193932786 +2025/08/19 14:12:19 [debug] 447377#447377: *1 reusable connection: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 44361 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 60000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:0001 d:00007F23289A41E0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http wait request handler +2025/08/19 14:12:19 [debug] 447377#447377: *1 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *1 recv: eof:0, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *1 recv: fd:6 84 of 1024 +2025/08/19 14:12:19 [debug] 447377#447377: *1 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 posix_memalign: 0000556F9E1DDA20:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http process request line +2025/08/19 14:12:19 [debug] 447377#447377: *1 http request line: "GET /health HTTP/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http uri: "/health" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http args: "" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http exten: "" +2025/08/19 14:12:19 [debug] 447377#447377: *1 posix_memalign: 0000556F9E1D3D90:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http process request header line +2025/08/19 14:12:19 [debug] 447377#447377: *1 http header: "Host: localhost:9001" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http header: "Accept: */*" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http header done +2025/08/19 14:12:19 [debug] 447377#447377: *1 event timer del: 6: 193932786 +2025/08/19 14:12:19 [debug] 447377#447377: *1 generic phase: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 rewrite phase: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *1 test location: "/health" +2025/08/19 14:12:19 [debug] 447377#447377: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:12:19 [debug] 447377#447377: *1 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *1 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *1 using configuration "/health" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http cl:-1 max:104857600 +2025/08/19 14:12:19 [debug] 447377#447377: *1 rewrite phase: 3 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http set discard body +2025/08/19 14:12:19 [debug] 447377#447377: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:12:19 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 14:12:19 [debug] 447377#447377: *1 write new buf t:1 f:0 0000556F9E1D4170, pos 0000556F9E1D4170, size: 196 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http write filter: l:0 f:0 s:196 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http output filter "/health?" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http copy filter: "/health?" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http postpone filter "/health?" 00007FFE17FC2520 +2025/08/19 14:12:19 [debug] 447377#447377: *1 write old buf t:1 f:0 0000556F9E1D4170, pos 0000556F9E1D4170, size: 196 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 write new buf t:0 f:0 0000000000000000, pos 0000556F9E1FBB32, size: 3 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http write filter: l:1 f:0 s:199 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http write filter limit 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 writev: 199 of 199 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http write filter 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http copy filter: 0 "/health?" +2025/08/19 14:12:19 [debug] 447377#447377: *1 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 14:12:19 [debug] 447377#447377: *1 set http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *1 http close request +2025/08/19 14:12:19 [debug] 447377#447377: *1 http log handler +2025/08/19 14:12:19 [debug] 447377#447377: *1 free: 0000556F9E1DDA20, unused: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 free: 0000556F9E1D3D90, unused: 2736 +2025/08/19 14:12:19 [debug] 447377#447377: *1 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 hc free: 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *1 hc busy: 0000000000000000 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 tcp_nodelay +2025/08/19 14:12:19 [debug] 447377#447377: *1 reusable connection: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *1 event timer add: 6: 65000:193937787 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 1 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 65000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:2001 d:00007F23289A41E0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *1 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *1 recv: eof:1, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *1 recv: fd:6 0 of 1024 +2025/08/19 14:12:19 [info] 447377#447377: *1 client 127.0.0.1 closed keepalive connection +2025/08/19 14:12:19 [debug] 447377#447377: *1 close http connection: 6 +2025/08/19 14:12:19 [debug] 447377#447377: *1 event timer del: 6: 193937787 +2025/08/19 14:12:19 [debug] 447377#447377: *1 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: *1 free: 0000556F9E1BE840, unused: 136 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 0 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: -1 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:5 ev:0001 d:00007F23289A4010 +2025/08/19 14:12:19 [debug] 447377#447377: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:12:19 [debug] 447377#447377: posix_memalign: 0000556F9E1BE840:512 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 accept: 127.0.0.1:55810 fd:6 +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer add: 6: 60000:193933046 +2025/08/19 14:12:19 [debug] 447377#447377: *2 reusable connection: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 259 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 60000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:0001 d:00007F23289A41E1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http wait request handler +2025/08/19 14:12:19 [debug] 447377#447377: *2 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: eof:0, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: fd:6 1024 of 1024 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: avail:112 +2025/08/19 14:12:19 [debug] 447377#447377: *2 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 posix_memalign: 0000556F9E1DDA20:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http process request line +2025/08/19 14:12:19 [debug] 447377#447377: *2 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http uri: "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http args: "" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http exten: "" +2025/08/19 14:12:19 [debug] 447377#447377: *2 posix_memalign: 0000556F9E1D3D90:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http process request header line +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "Host: localhost:9001" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "Accept: */*" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4ZTUxM2I4ZmVlODkzODcxMWIwYjAxZjRjNGQ2NGIzNTA3MzZmYTZkYWY4MGQ4MmJlMTgxOTRmMzMxNDgzMzUzIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjcxMzksInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI5NTgzMGRhYjk4NDRjYjY4ZmFlMjAwMTdhZjAxYTRiOWZjZmViYWVlYzkxOTQyNDlhMTg1MTE0ZWFjNzVjNjg5Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDczOSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5YThkMjE0MjhiZWRlYzRlMmQzYjk5M2JhMzAxYjJiZWEwNDIxZGI5MDg3N2RhYTExN2RlMGFhMjgzMWNkMDdkYmI0YzQ0MDRhZjhmYTU5MjE0N2ZkZjNhNGVlYWZiMzMxMzIxNGM0YzBlODU5MjRmNWE1MjZkOTdmNWJjMWViIn0=" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "Content-Type: text/plain" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "Content-Disposition: attachment; filename="test_blob_1755627139.txt"" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header: "Content-Length: 296" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http header done +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer del: 6: 193933046 +2025/08/19 14:12:19 [debug] 447377#447377: *2 generic phase: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 rewrite phase: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 test location: "/health" +2025/08/19 14:12:19 [debug] 447377#447377: *2 test location: "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *2 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:12:19 [debug] 447377#447377: *2 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *2 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *2 using configuration "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http cl:296 max:104857600 +2025/08/19 14:12:19 [debug] 447377#447377: *2 rewrite phase: 3 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "PUT" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script regex: "^(PUT)$" +2025/08/19 14:12:19 [notice] 447377#447377: *2 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script if +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script if: false +2025/08/19 14:12:19 [debug] 447377#447377: *2 post rewrite phase: 4 +2025/08/19 14:12:19 [debug] 447377#447377: *2 generic phase: 5 +2025/08/19 14:12:19 [debug] 447377#447377: *2 generic phase: 6 +2025/08/19 14:12:19 [debug] 447377#447377: *2 generic phase: 7 +2025/08/19 14:12:19 [debug] 447377#447377: *2 access phase: 8 +2025/08/19 14:12:19 [debug] 447377#447377: *2 access phase: 9 +2025/08/19 14:12:19 [debug] 447377#447377: *2 access phase: 10 +2025/08/19 14:12:19 [debug] 447377#447377: *2 post access phase: 11 +2025/08/19 14:12:19 [debug] 447377#447377: *2 generic phase: 12 +2025/08/19 14:12:19 [debug] 447377#447377: *2 generic phase: 13 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http client request body preread 184 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http request body content length filter +2025/08/19 14:12:19 [debug] 447377#447377: *2 http body new buf t:1 f:0 0000556F9E1C13E8, pos 0000556F9E1C13E8, size: 184 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http read client request body +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: eof:0, avail:112 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: fd:6 112 of 112 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: avail:0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http client request body recv 112 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http body new buf t:1 f:0 0000556F9E1D4820, pos 0000556F9E1D4820, size: 112 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http client request body rest 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http init upstream, client timer: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:12:19 [debug] 447377#447377: *2 posix_memalign: 0000556F9E1C8140:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "QUERY_STRING" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "QUERY_STRING: " +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "REQUEST_METHOD" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "PUT" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "CONTENT_TYPE" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "text/plain" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "CONTENT_LENGTH" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "296" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SCRIPT_NAME" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "REQUEST_URI" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "DOCUMENT_URI" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "./blobs" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "HTTP/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "REQUEST_SCHEME" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "http" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "CGI/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "nginx/" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "1.18.0" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "REMOTE_ADDR" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "127.0.0.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "REMOTE_PORT" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "55810" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "REMOTE_PORT: 55810" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SERVER_ADDR" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "127.0.0.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SERVER_PORT" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "9001" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SERVER_NAME" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "localhost" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "REDIRECT_STATUS" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "200" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script var: "./blobs" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http script copy: "/ginxsom.fcgi" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4ZTUxM2I4ZmVlODkzODcxMWIwYjAxZjRjNGQ2NGIzNTA3MzZmYTZkYWY4MGQ4MmJlMTgxOTRmMzMxNDgzMzUzIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjcxMzksInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI5NTgzMGRhYjk4NDRjYjY4ZmFlMjAwMTdhZjAxYTRiOWZjZmViYWVlYzkxOTQyNDlhMTg1MTE0ZWFjNzVjNjg5Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDczOSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5YThkMjE0MjhiZWRlYzRlMmQzYjk5M2JhMzAxYjJiZWEwNDIxZGI5MDg3N2RhYTExN2RlMGFhMjgzMWNkMDdkYmI0YzQ0MDRhZjhmYTU5MjE0N2ZkZjNhNGVlYWZiMzMxMzIxNGM0YzBlODU5MjRmNWE1MjZkOTdmNWJjMWViIn0=" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755627139.txt"" +2025/08/19 14:12:19 [debug] 447377#447377: *2 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http cleanup add: 0000556F9E1D4B70 +2025/08/19 14:12:19 [debug] 447377#447377: *2 get rr peer, try: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 stream socket 10 +2025/08/19 14:12:19 [debug] 447377#447377: *2 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:12:19 [debug] 447377#447377: *2 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #3 +2025/08/19 14:12:19 [debug] 447377#447377: *2 connected +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream connect: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 posix_memalign: 0000556F9E1A7F20:128 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream send request +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream send request body +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer buf fl:0 s:1304 +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer buf fl:0 s:184 +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer buf fl:0 s:8 +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer buf fl:0 s:112 +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer buf fl:0 s:8 +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer in: 0000556F9E1D4C00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 writev: 1616 of 1616 +2025/08/19 14:12:19 [debug] 447377#447377: *2 chain writer out: 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer add: 10: 60000:193933046 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http request count:2 blk:0 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 0 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 60000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:0004 d:00007F23289A41E1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http run request: "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream check client, write event:1, "/upload" +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:10 ev:0004 d:00007F23289A42C8 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream request: "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream dummy handler +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 2 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 59998 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:10 ev:2005 d:00007F23289A42C8 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream request: "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream process header +2025/08/19 14:12:19 [debug] 447377#447377: *2 malloc: 0000556F9E1C9150:4096 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: eof:1, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: fd:10 3504 of 4096 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 01 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 06 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 01 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 0D +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 8A +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 06 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record length: 3466 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "LOG: [2025-08-19 14:12:19] PUT /upload - Auth: pending - Status: 0" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4ZTUxM2I4ZmVlODkzODcxMWIwYjAxZjRjNGQ2NGIzNTA3MzZmYTZkYWY4MGQ4MmJlMTgxOTRmMzMxNDgzMzUzIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjcxMzksInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI5NTgzMGRhYjk4NDRjYjY4ZmFlMjAwMTdhZjAxYTRiOWZjZmViYWVlYzkxOTQyNDlhMTg1MTE0ZWFjNzVjNjg5Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDczOSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5YThkMjE0MjhiZWRlYzRlMmQzYjk5M2JhMzAxYjJiZWEwNDIxZGI5MDg3N2RhYTExN2RlMGFhMjgzMWNkMDdkYmI0YzQ0MDRhZjhmYTU5MjE0N2ZkZjNhNGVlYWZiMzMxMzIxNGM0YzBlODU5MjRmNWE1MjZkOTdmNWJjMWViIn0=" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "LOG: [2025-08-19 14:12:19] PUT /upload - Auth: auth_provided - Status: 0" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: Successfully read DEBUG: Calculated SHA-256: 95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request_with_rules called - method: upload, file_hash: 95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689, mime_type: text/plain, file_size: 296" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: Authorization header provided, starting basic nostr authentication" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request ENTRY - method: upload, hash: 95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - calling parse_authorization_header" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4ZTUxM2I4ZmVlODkz..." +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 posix_memalign: 0000556F9E1CA160:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - calling cJSON_Parse on: {"kind":24242,"id":"8e513b8fee8938711b0b01f4c4d64b350736fa6daf80d82be18194f331483353","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1755627139,"tags":[["t","upload"],["x","95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689"],["expiration","1755630739"]],"content":"","sig":"d9a8d21428bedec4e2d3b993ba301b2bea0421db90877daa117de0aa2831cd07dbb4c4404af8fa592147fdf3a4eeafb3313214c4c0e85924f5a526d97f5bc1eb"}" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - cJSON_Parse succeeded, event parsed" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - Event fields before validation:" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: id: 8e513b8fee8938711b0b01f4c4d64b350736fa6daf80d82be18194f331483353" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: sig: d9a8d21428bedec4e2d3b993ba301b2bea0421db90877daa117de0aa2831cd07dbb4c4404af8fa592147fdf3a4eeafb3313214c4c0e85924f5a526d97f5bc1eb" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: kind: 24242" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: created_at: 1755627139" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - calling nostr_validate_event" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - nostr_validate_event returned: -32" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - Nostr event validation FAILED: -32 (Event has invalid public key)" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "DEBUG: authenticate_request - Pubkey length: DEBUG: Basic nostr authentication failed: -32 (Event has invalid public key)" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header: "Content-Type: application/json" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi parser: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi header done +2025/08/19 14:12:19 [debug] 447377#447377: *2 posix_memalign: 0000556F9E1CB170:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *2 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:12:19 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 14:12:19] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4ZTUxM2I4ZmVlODkzODcxMWIwYjAxZjRjNGQ2NGIzNTA3MzZmYTZkYWY4MGQ4MmJlMTgxOTRmMzMxNDgzMzUzIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjcxMzksInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI5NTgzMGRhYjk4NDRjYjY4ZmFlMjAwMTdhZjAxYTRiOWZjZmViYWVlYzkxOTQyNDlhMTg1MTE0ZWFjNzVjNjg5Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMDczOSJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ5YThkMjE0MjhiZWRlYzRlMmQzYjk5M2JhMzAxYjJiZWEwNDIxZGI5MDg3N2RhYTExN2RlMGFhMjgzMWNkMDdkYmI0YzQ0MDRhZjhmYTU5MjE0N2ZkZjNhNGVlYWZiMzMxMzIxNGM0YzBlODU5MjRmNWE1MjZkOTdmNWJjMWViIn0= +LOG: [2025-08-19 14:12:19] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG: Successfully read DEBUG: Calculated SHA-256: 95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689 +DEBUG: authenticate_request_with_rules called - method: upload, file_hash: 95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689, mime_type: text/plain, file_size: 296 +DEBUG: Authorization header provided, starting basic nostr authentication +DEBUG: authenticate_request ENTRY - method: upload, hash: 95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689 +DEBUG: authenticate_request - calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4ZTUxM2I4ZmVlODkz... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded +D +2025/08/19 14:12:19 [debug] 447377#447377: *2 write new buf t:1 f:0 0000556F9E1CB190, pos 0000556F9E1CB190, size: 3346 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter: l:0 f:0 s:3346 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter limit 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 writev: 3346 of 3346 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http cacheable: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream process upstream +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe read upstream: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe preread: 261 +2025/08/19 14:12:19 [debug] 447377#447377: *2 readv: eof:1, avail:0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 readv: 1, last:592 +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe recv chain: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe buf free s:0 t:1 f:0 0000556F9E1C9150, pos 0000556F9E1C9DFB, size: 261 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe length: -1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 input buf #0 0000556F9E1C9DFB +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 01 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 06 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 01 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record length: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi closed stdout +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 01 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 03 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 01 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 08 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record byte: 00 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi record length: 8 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http fastcgi sent end request +2025/08/19 14:12:19 [debug] 447377#447377: *2 input buf 0000556F9E1C9DFB 231 +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe write downstream: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe write downstream flush in +2025/08/19 14:12:19 [debug] 447377#447377: *2 http output filter "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http copy filter: "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http postpone filter "/upload?" 0000556F9E1D4BE0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http chunk: 231 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write new buf t:1 f:0 0000556F9E1CAFB0, pos 0000556F9E1CAFB0, size: 4 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write new buf t:1 f:0 0000556F9E1C9150, pos 0000556F9E1C9DFB, size: 231 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write new buf t:0 f:0 0000000000000000, pos 0000556F961142E8, size: 2 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter: l:0 f:0 s:237 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http copy filter: 0 "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 pipe write downstream done +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer: 10, old: 193933046, new: 193933048 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream exit: 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *2 finalize http upstream request: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 finalize http fastcgi request +2025/08/19 14:12:19 [debug] 447377#447377: *2 free rr peer 1 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 close http upstream connection: 10 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1A7F20, unused: 48 +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer del: 10: 193933046 +2025/08/19 14:12:19 [debug] 447377#447377: *2 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http upstream temp fd: -1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http output filter "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http copy filter: "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http postpone filter "/upload?" 00007FFE17FC25D0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http chunk: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write old buf t:1 f:0 0000556F9E1CAFB0, pos 0000556F9E1CAFB0, size: 4 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write old buf t:1 f:0 0000556F9E1C9150, pos 0000556F9E1C9DFB, size: 231 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write old buf t:0 f:0 0000000000000000, pos 0000556F961142E8, size: 2 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 write new buf t:0 f:0 0000000000000000, pos 0000556F961142E5, size: 5 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter: l:1 f:0 s:242 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter limit 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 writev: 242 of 242 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http write filter 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http copy filter: 0 "/upload?" +2025/08/19 14:12:19 [debug] 447377#447377: *2 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 set http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *2 http close request +2025/08/19 14:12:19 [debug] 447377#447377: *2 http log handler +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1C9150 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1DDA20, unused: 3 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1D3D90, unused: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1C8140, unused: 7 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1CA160, unused: 42 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1CB170, unused: 718 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 hc free: 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *2 hc busy: 0000000000000000 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 tcp_nodelay +2025/08/19 14:12:19 [debug] 447377#447377: *2 reusable connection: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer add: 6: 65000:193938048 +2025/08/19 14:12:19 [debug] 447377#447377: *2 post event 0000556F9E20F760 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 0 +2025/08/19 14:12:19 [debug] 447377#447377: posted event 0000556F9E20F760 +2025/08/19 14:12:19 [debug] 447377#447377: *2 delete posted event 0000556F9E20F760 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *2 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: eof:0, avail:0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 65000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:2005 d:00007F23289A41E1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *2 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: eof:1, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *2 recv: fd:6 0 of 1024 +2025/08/19 14:12:19 [info] 447377#447377: *2 client 127.0.0.1 closed keepalive connection +2025/08/19 14:12:19 [debug] 447377#447377: *2 close http connection: 6 +2025/08/19 14:12:19 [debug] 447377#447377: *2 event timer del: 6: 193938048 +2025/08/19 14:12:19 [debug] 447377#447377: *2 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: *2 free: 0000556F9E1BE840, unused: 120 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 2 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: -1 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:5 ev:0001 d:00007F23289A4010 +2025/08/19 14:12:19 [debug] 447377#447377: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:12:19 [debug] 447377#447377: posix_memalign: 0000556F9E1BE840:512 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *4 accept: 127.0.0.1:55826 fd:6 +2025/08/19 14:12:19 [debug] 447377#447377: *4 event timer add: 6: 60000:193933061 +2025/08/19 14:12:19 [debug] 447377#447377: *4 reusable connection: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 11 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 60000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:0001 d:00007F23289A41E0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http wait request handler +2025/08/19 14:12:19 [debug] 447377#447377: *4 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *4 recv: eof:0, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 recv: fd:6 142 of 1024 +2025/08/19 14:12:19 [debug] 447377#447377: *4 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 posix_memalign: 0000556F9E1DDA20:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http process request line +2025/08/19 14:12:19 [debug] 447377#447377: *4 http request line: "GET /95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689 HTTP/1.1" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http uri: "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http args: "" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http exten: "" +2025/08/19 14:12:19 [debug] 447377#447377: *4 posix_memalign: 0000556F9E1D3D90:4096 @16 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http process request header line +2025/08/19 14:12:19 [debug] 447377#447377: *4 http header: "Host: localhost:9001" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http header: "Accept: */*" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http header done +2025/08/19 14:12:19 [debug] 447377#447377: *4 event timer del: 6: 193933061 +2025/08/19 14:12:19 [debug] 447377#447377: *4 generic phase: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 rewrite phase: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 test location: "/health" +2025/08/19 14:12:19 [debug] 447377#447377: *4 test location: "/debug/list" +2025/08/19 14:12:19 [debug] 447377#447377: *4 test location: "/" +2025/08/19 14:12:19 [debug] 447377#447377: *4 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *4 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http cl:-1 max:104857600 +2025/08/19 14:12:19 [debug] 447377#447377: *4 rewrite phase: 3 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http script var +2025/08/19 14:12:19 [debug] 447377#447377: *4 http script var: "GET" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http script value: "DELETE" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http script not equal +2025/08/19 14:12:19 [debug] 447377#447377: *4 http script if +2025/08/19 14:12:19 [debug] 447377#447377: *4 http finalize request: 404, "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" a:1, c:1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http special response: 404, "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http set discard body +2025/08/19 14:12:19 [debug] 447377#447377: *4 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:12:19 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 14:12:19 [debug] 447377#447377: *4 write new buf t:1 f:0 0000556F9E1D4170, pos 0000556F9E1D4170, size: 164 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http write filter: l:0 f:0 s:164 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http output filter "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http copy filter: "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http postpone filter "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" 0000556F9E1D4300 +2025/08/19 14:12:19 [debug] 447377#447377: *4 write old buf t:1 f:0 0000556F9E1D4170, pos 0000556F9E1D4170, size: 164 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 write new buf t:0 f:0 0000000000000000, pos 0000556F96153580, size: 100 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 write new buf t:0 f:0 0000000000000000, pos 0000556F96153C80, size: 62 file: 0, size: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http write filter: l:1 f:0 s:326 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http write filter limit 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 writev: 326 of 326 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http write filter 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http copy filter: 0 "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" +2025/08/19 14:12:19 [debug] 447377#447377: *4 http finalize request: 0, "/95830dab9844cb68fae20017af01a4b9fcfebaeec9194249a185114eac75c689?" a:1, c:1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 set http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *4 http close request +2025/08/19 14:12:19 [debug] 447377#447377: *4 http log handler +2025/08/19 14:12:19 [debug] 447377#447377: *4 free: 0000556F9E1DDA20, unused: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 free: 0000556F9E1D3D90, unused: 2456 +2025/08/19 14:12:19 [debug] 447377#447377: *4 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 hc free: 0000000000000000 +2025/08/19 14:12:19 [debug] 447377#447377: *4 hc busy: 0000000000000000 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 tcp_nodelay +2025/08/19 14:12:19 [debug] 447377#447377: *4 reusable connection: 1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 event timer add: 6: 65000:193938061 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 0 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: 65000 +2025/08/19 14:12:19 [debug] 447377#447377: epoll: fd:6 ev:2001 d:00007F23289A41E0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 http keepalive handler +2025/08/19 14:12:19 [debug] 447377#447377: *4 malloc: 0000556F9E1C10A0:1024 +2025/08/19 14:12:19 [debug] 447377#447377: *4 recv: eof:1, avail:-1 +2025/08/19 14:12:19 [debug] 447377#447377: *4 recv: fd:6 0 of 1024 +2025/08/19 14:12:19 [info] 447377#447377: *4 client 127.0.0.1 closed keepalive connection +2025/08/19 14:12:19 [debug] 447377#447377: *4 close http connection: 6 +2025/08/19 14:12:19 [debug] 447377#447377: *4 event timer del: 6: 193938061 +2025/08/19 14:12:19 [debug] 447377#447377: *4 reusable connection: 0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 free: 0000556F9E1C10A0 +2025/08/19 14:12:19 [debug] 447377#447377: *4 free: 0000556F9E1BE840, unused: 136 +2025/08/19 14:12:19 [debug] 447377#447377: timer delta: 1 +2025/08/19 14:12:19 [debug] 447377#447377: worker cycle +2025/08/19 14:12:19 [debug] 447377#447377: epoll timer: -1 +2025/08/19 14:14:46 [debug] 447377#447377: epoll: fd:7 ev:2011 d:00007F23289A40F8 +2025/08/19 14:14:46 [debug] 447377#447377: epoll_wait() error on fd:7 ev:2011 +2025/08/19 14:14:46 [debug] 447377#447377: channel handler +2025/08/19 14:14:46 [debug] 447377#447377: recvmsg() returned zero +2025/08/19 14:14:46 [debug] 447377#447377: channel: -1 +2025/08/19 14:14:46 [debug] 447377#447377: epoll del connection: fd:7 +2025/08/19 14:14:46 [debug] 447377#447377: reusable connection: 0 +2025/08/19 14:14:46 [debug] 447377#447377: timer delta: 146330 +2025/08/19 14:14:46 [debug] 447377#447377: worker cycle +2025/08/19 14:14:46 [debug] 447377#447377: epoll timer: -1 +2025/08/19 14:15:18 [debug] 448982#448982: bind() 0.0.0.0:9001 #5 +2025/08/19 14:15:18 [notice] 448982#448982: using the "epoll" event method +2025/08/19 14:15:18 [debug] 448982#448982: counter: 00007AC9A4DC3080, 1 +2025/08/19 14:15:18 [notice] 448982#448982: nginx/1.18.0 (Ubuntu) +2025/08/19 14:15:18 [notice] 448982#448982: OS: Linux 6.12.10-76061203-generic +2025/08/19 14:15:18 [notice] 448982#448982: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 14:15:18 [debug] 448983#448982: write: 6, 00007FFD0C350B60, 7, 0 +2025/08/19 14:15:18 [debug] 448983#448983: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 14:15:18 [notice] 448983#448983: start worker processes +2025/08/19 14:15:18 [debug] 448983#448983: channel 6:7 +2025/08/19 14:15:18 [notice] 448983#448983: start worker process 448984 +2025/08/19 14:15:18 [debug] 448983#448983: sigsuspend +2025/08/19 14:15:18 [debug] 448984#448984: add cleanup: 0000562F01D8FA70 +2025/08/19 14:15:18 [debug] 448984#448984: malloc: 0000562F01D42BD0:8 +2025/08/19 14:15:18 [debug] 448984#448984: notify eventfd: 9 +2025/08/19 14:15:18 [debug] 448984#448984: testing the EPOLLRDHUP flag: success +2025/08/19 14:15:18 [debug] 448984#448984: malloc: 0000562F01D55580:6144 +2025/08/19 14:15:18 [debug] 448984#448984: malloc: 00007AC9A4BBB010:237568 +2025/08/19 14:15:18 [debug] 448984#448984: malloc: 0000562F01D926A0:98304 +2025/08/19 14:15:18 [debug] 448984#448984: malloc: 0000562F01DAA6B0:98304 +2025/08/19 14:15:18 [debug] 448984#448984: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:15:18 [debug] 448984#448984: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:15:18 [debug] 448984#448984: setproctitle: "nginx: worker process" +2025/08/19 14:15:18 [debug] 448984#448984: worker cycle +2025/08/19 14:15:18 [debug] 448984#448984: epoll timer: -1 +2025/08/19 14:21:42 [notice] 448983#448983: signal 15 (SIGTERM) received from 450059, exiting +2025/08/19 14:21:42 [debug] 448983#448983: wake up, sigio 0 +2025/08/19 14:21:42 [debug] 448983#448983: child: 0 448984 e:0 t:0 d:0 r:1 j:0 +2025/08/19 14:21:42 [debug] 448983#448983: termination cycle: 50 +2025/08/19 14:21:42 [debug] 448983#448983: sigsuspend +2025/08/19 14:21:42 [debug] 448984#448984: epoll: fd:7 ev:0001 d:00007AC9A4BBB0F8 +2025/08/19 14:21:42 [debug] 448984#448984: channel handler +2025/08/19 14:21:42 [debug] 448984#448984: channel: 32 +2025/08/19 14:21:42 [debug] 448984#448984: channel command: 4 +2025/08/19 14:21:42 [debug] 448984#448984: channel: -2 +2025/08/19 14:21:42 [debug] 448984#448984: timer delta: 384860 +2025/08/19 14:21:42 [notice] 448984#448984: exiting +2025/08/19 14:21:42 [debug] 448984#448984: flush files +2025/08/19 14:21:42 [debug] 448984#448984: run cleanup: 0000562F01D8FA70 +2025/08/19 14:21:42 [debug] 448984#448984: run cleanup: 0000562F01D82A08 +2025/08/19 14:21:42 [debug] 448984#448984: cleanup resolver +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D90DD0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D83BD0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D62B40 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D61A30 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D5BA00 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D5A940 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D59880 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D587C0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D50160 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D47130, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D51570, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D5CA10, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D63B50, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D67B60, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D6BB70, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D6FB80, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D73B90, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D77BA0, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D7BBB0, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D7FBC0, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D84DA0, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D88DB0, unused: 0 +2025/08/19 14:21:42 [debug] 448984#448984: free: 0000562F01D8CDC0, unused: 4920 +2025/08/19 14:21:42 [notice] 448984#448984: exit +2025/08/19 14:21:42 [notice] 448983#448983: signal 17 (SIGCHLD) received from 448984 +2025/08/19 14:21:42 [notice] 448983#448983: worker process 448984 exited with code 0 +2025/08/19 14:21:42 [debug] 448983#448983: shmtx forced unlock +2025/08/19 14:21:42 [debug] 448983#448983: wake up, sigio 3 +2025/08/19 14:21:42 [debug] 448983#448983: reap children +2025/08/19 14:21:42 [debug] 448983#448983: child: 0 448984 e:1 t:1 d:0 r:1 j:0 +2025/08/19 14:21:42 [notice] 448983#448983: exit +2025/08/19 14:21:42 [debug] 448983#448983: close listening 0.0.0.0:9001 #5 +2025/08/19 14:21:42 [debug] 448983#448983: run cleanup: 0000562F01D82A08 +2025/08/19 14:21:42 [debug] 448983#448983: cleanup resolver +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D90DD0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D83BD0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D62B40 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D61A30 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D5BA00 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D5A940 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D59880 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D587C0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D50160 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D47130, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D51570, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D5CA10, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D63B50, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D67B60, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D6BB70, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D6FB80, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D73B90, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D77BA0, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D7BBB0, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D7FBC0, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D84DA0, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D88DB0, unused: 0 +2025/08/19 14:21:42 [debug] 448983#448983: free: 0000562F01D8CDC0, unused: 4951 +2025/08/19 14:21:42 [debug] 450060#450060: bind() 0.0.0.0:9001 #5 +2025/08/19 14:21:42 [notice] 450060#450060: using the "epoll" event method +2025/08/19 14:21:42 [debug] 450060#450060: counter: 0000772305E43080, 1 +2025/08/19 14:21:42 [notice] 450060#450060: nginx/1.18.0 (Ubuntu) +2025/08/19 14:21:42 [notice] 450060#450060: OS: Linux 6.12.10-76061203-generic +2025/08/19 14:21:42 [notice] 450060#450060: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 14:21:42 [debug] 450061#450060: write: 6, 00007FFED8297810, 7, 0 +2025/08/19 14:21:42 [debug] 450061#450061: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 14:21:42 [notice] 450061#450061: start worker processes +2025/08/19 14:21:42 [debug] 450061#450061: channel 6:7 +2025/08/19 14:21:42 [notice] 450061#450061: start worker process 450062 +2025/08/19 14:21:42 [debug] 450061#450061: sigsuspend +2025/08/19 14:21:42 [debug] 450062#450062: add cleanup: 00005CC70FEFBA70 +2025/08/19 14:21:42 [debug] 450062#450062: malloc: 00005CC70FEAEBD0:8 +2025/08/19 14:21:42 [debug] 450062#450062: notify eventfd: 9 +2025/08/19 14:21:42 [debug] 450062#450062: testing the EPOLLRDHUP flag: success +2025/08/19 14:21:42 [debug] 450062#450062: malloc: 00005CC70FEC1580:6144 +2025/08/19 14:21:42 [debug] 450062#450062: malloc: 00007723057C5010:237568 +2025/08/19 14:21:42 [debug] 450062#450062: malloc: 00005CC70FEFE6A0:98304 +2025/08/19 14:21:42 [debug] 450062#450062: malloc: 00005CC70FF166B0:98304 +2025/08/19 14:21:42 [debug] 450062#450062: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:21:42 [debug] 450062#450062: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:21:42 [debug] 450062#450062: setproctitle: "nginx: worker process" +2025/08/19 14:21:42 [debug] 450062#450062: worker cycle +2025/08/19 14:21:42 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:24:00 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:24:00 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *1 accept: 127.0.0.1:52770 fd:6 +2025/08/19 14:24:00 [debug] 450062#450062: *1 event timer add: 6: 60000:194633164 +2025/08/19 14:24:00 [debug] 450062#450062: *1 reusable connection: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 137165 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http wait request handler +2025/08/19 14:24:00 [debug] 450062#450062: *1 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *1 recv: eof:0, avail:-1 +2025/08/19 14:24:00 [debug] 450062#450062: *1 recv: fd:6 84 of 1024 +2025/08/19 14:24:00 [debug] 450062#450062: *1 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http process request line +2025/08/19 14:24:00 [debug] 450062#450062: *1 http request line: "GET /health HTTP/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http uri: "/health" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http args: "" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http exten: "" +2025/08/19 14:24:00 [debug] 450062#450062: *1 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http process request header line +2025/08/19 14:24:00 [debug] 450062#450062: *1 http header: "Host: localhost:9001" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http header: "Accept: */*" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http header done +2025/08/19 14:24:00 [debug] 450062#450062: *1 event timer del: 6: 194633164 +2025/08/19 14:24:00 [debug] 450062#450062: *1 generic phase: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 rewrite phase: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *1 test location: "/health" +2025/08/19 14:24:00 [debug] 450062#450062: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:24:00 [debug] 450062#450062: *1 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *1 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *1 using configuration "/health" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http cl:-1 max:104857600 +2025/08/19 14:24:00 [debug] 450062#450062: *1 rewrite phase: 3 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http set discard body +2025/08/19 14:24:00 [debug] 450062#450062: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:24:00 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 14:24:00 [debug] 450062#450062: *1 write new buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 196 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http write filter: l:0 f:0 s:196 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http output filter "/health?" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http copy filter: "/health?" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http postpone filter "/health?" 00007FFED82973A0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 write old buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 196 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 write new buf t:0 f:0 0000000000000000, pos 00005CC70FEEAB32, size: 3 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http write filter: l:1 f:0 s:199 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http write filter limit 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 writev: 199 of 199 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http write filter 0000000000000000 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http copy filter: 0 "/health?" +2025/08/19 14:24:00 [debug] 450062#450062: *1 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 14:24:00 [debug] 450062#450062: *1 set http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *1 http close request +2025/08/19 14:24:00 [debug] 450062#450062: *1 http log handler +2025/08/19 14:24:00 [debug] 450062#450062: *1 free: 00005CC70FECCA20, unused: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 free: 00005CC70FEC2D90, unused: 2736 +2025/08/19 14:24:00 [debug] 450062#450062: *1 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 hc free: 0000000000000000 +2025/08/19 14:24:00 [debug] 450062#450062: *1 hc busy: 0000000000000000 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 tcp_nodelay +2025/08/19 14:24:00 [debug] 450062#450062: *1 reusable connection: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *1 event timer add: 6: 65000:194638164 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:2001 d:00007723057C51E0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *1 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *1 recv: eof:1, avail:-1 +2025/08/19 14:24:00 [debug] 450062#450062: *1 recv: fd:6 0 of 1024 +2025/08/19 14:24:00 [info] 450062#450062: *1 client 127.0.0.1 closed keepalive connection +2025/08/19 14:24:00 [debug] 450062#450062: *1 close http connection: 6 +2025/08/19 14:24:00 [debug] 450062#450062: *1 event timer del: 6: 194638164 +2025/08/19 14:24:00 [debug] 450062#450062: *1 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: *1 free: 00005CC70FEAD840, unused: 136 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:24:00 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:24:00 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *2 accept: 127.0.0.1:52778 fd:6 +2025/08/19 14:24:00 [debug] 450062#450062: *2 event timer add: 6: 60000:194633435 +2025/08/19 14:24:00 [debug] 450062#450062: *2 reusable connection: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 270 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http wait request handler +2025/08/19 14:24:00 [debug] 450062#450062: *2 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: eof:0, avail:-1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: fd:6 1024 of 1024 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: avail:112 +2025/08/19 14:24:00 [debug] 450062#450062: *2 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http process request line +2025/08/19 14:24:00 [debug] 450062#450062: *2 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http uri: "/upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http args: "" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http exten: "" +2025/08/19 14:24:00 [debug] 450062#450062: *2 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http process request header line +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "Host: localhost:9001" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "Accept: */*" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4NTE5MDA2OWI4NWQ3MWJlOGEyN2I5MGMwZTY2Mjg5ZTEwYzcwNGMxZTAxMDYzNzA2ZmJjM2UyM2JiM2YzYTc1IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjc4NDAsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIyZGQ2YTI5ZjIyZmFiNmU5ODQ4ZjQ1Y2ZkNzIzYTU0MjkwOWZiY2MwNjAyMThkNTQ2ZTkyMTBiMzQzNmRjYTM0Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTQ0MCJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ1MWExM2Q4NDM2YTY5NGEyZjdmN2FmZGRkNDE1NWE0ODc3N2IzNWEzMjlmYTUxMzc2MjNhYzQ2OTk4Zjg1NGQxYTI4YWUzOTYyOGZiYjgwYTgxMmNjMWU1ZjRlMWE4ZDBkODk2YzdmYzU1NDNiZTcyMjIxN2Q0NTkyMjlkMTUyIn0=" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "Content-Type: text/plain" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "Content-Disposition: attachment; filename="test_blob_1755627840.txt"" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header: "Content-Length: 296" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http header done +2025/08/19 14:24:00 [debug] 450062#450062: *2 event timer del: 6: 194633435 +2025/08/19 14:24:00 [debug] 450062#450062: *2 generic phase: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 rewrite phase: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 test location: "/health" +2025/08/19 14:24:00 [debug] 450062#450062: *2 test location: "/upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *2 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:24:00 [debug] 450062#450062: *2 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *2 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *2 using configuration "/upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http cl:296 max:104857600 +2025/08/19 14:24:00 [debug] 450062#450062: *2 rewrite phase: 3 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "PUT" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script regex: "^(PUT)$" +2025/08/19 14:24:00 [notice] 450062#450062: *2 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script if +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script if: false +2025/08/19 14:24:00 [debug] 450062#450062: *2 post rewrite phase: 4 +2025/08/19 14:24:00 [debug] 450062#450062: *2 generic phase: 5 +2025/08/19 14:24:00 [debug] 450062#450062: *2 generic phase: 6 +2025/08/19 14:24:00 [debug] 450062#450062: *2 generic phase: 7 +2025/08/19 14:24:00 [debug] 450062#450062: *2 access phase: 8 +2025/08/19 14:24:00 [debug] 450062#450062: *2 access phase: 9 +2025/08/19 14:24:00 [debug] 450062#450062: *2 access phase: 10 +2025/08/19 14:24:00 [debug] 450062#450062: *2 post access phase: 11 +2025/08/19 14:24:00 [debug] 450062#450062: *2 generic phase: 12 +2025/08/19 14:24:00 [debug] 450062#450062: *2 generic phase: 13 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http client request body preread 184 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http request body content length filter +2025/08/19 14:24:00 [debug] 450062#450062: *2 http body new buf t:1 f:0 00005CC70FEB03E8, pos 00005CC70FEB03E8, size: 184 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http read client request body +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: eof:0, avail:112 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: fd:6 112 of 112 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: avail:0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http client request body recv 112 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http body new buf t:1 f:0 00005CC70FEC3820, pos 00005CC70FEC3820, size: 112 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http client request body rest 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http init upstream, client timer: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:24:00 [debug] 450062#450062: *2 posix_memalign: 00005CC70FEB7140:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "QUERY_STRING" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "QUERY_STRING: " +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "REQUEST_METHOD" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "PUT" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "CONTENT_TYPE" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "text/plain" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "CONTENT_LENGTH" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "296" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SCRIPT_NAME" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "/upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "REQUEST_URI" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "/upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "DOCUMENT_URI" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "/upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "./blobs" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "HTTP/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "REQUEST_SCHEME" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "http" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "CGI/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "nginx/" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "1.18.0" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "REMOTE_ADDR" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "127.0.0.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "REMOTE_PORT" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "52778" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "REMOTE_PORT: 52778" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SERVER_ADDR" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "127.0.0.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SERVER_PORT" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "9001" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SERVER_NAME" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "localhost" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "REDIRECT_STATUS" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "200" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script var: "./blobs" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http script copy: "/ginxsom.fcgi" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI4NTE5MDA2OWI4NWQ3MWJlOGEyN2I5MGMwZTY2Mjg5ZTEwYzcwNGMxZTAxMDYzNzA2ZmJjM2UyM2JiM2YzYTc1IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjc4NDAsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIyZGQ2YTI5ZjIyZmFiNmU5ODQ4ZjQ1Y2ZkNzIzYTU0MjkwOWZiY2MwNjAyMThkNTQ2ZTkyMTBiMzQzNmRjYTM0Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTQ0MCJdXSwiY29udGVudCI6IiIsInNpZyI6ImQ1MWExM2Q4NDM2YTY5NGEyZjdmN2FmZGRkNDE1NWE0ODc3N2IzNWEzMjlmYTUxMzc2MjNhYzQ2OTk4Zjg1NGQxYTI4YWUzOTYyOGZiYjgwYTgxMmNjMWU1ZjRlMWE4ZDBkODk2YzdmYzU1NDNiZTcyMjIxN2Q0NTkyMjlkMTUyIn0=" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755627840.txt"" +2025/08/19 14:24:00 [debug] 450062#450062: *2 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http cleanup add: 00005CC70FEC3B70 +2025/08/19 14:24:00 [debug] 450062#450062: *2 get rr peer, try: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 stream socket 10 +2025/08/19 14:24:00 [debug] 450062#450062: *2 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:24:00 [debug] 450062#450062: *2 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #3 +2025/08/19 14:24:00 [crit] 450062#450062: *2 connect() to unix:/tmp/ginxsom-fcgi.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/08/19 14:24:00 [debug] 450062#450062: *2 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http upstream connect: -5 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http next upstream, 2 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free rr peer 1 4 +2025/08/19 14:24:00 [debug] 450062#450062: *2 finalize http upstream request: 502 +2025/08/19 14:24:00 [debug] 450062#450062: *2 finalize http fastcgi request +2025/08/19 14:24:00 [debug] 450062#450062: *2 http finalize request: 502, "/upload?" a:1, c:2 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http special response: 502, "/upload?" +2025/08/19 14:24:00 [debug] 450062#450062: *2 HTTP/1.1 502 Bad Gateway +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:24:00 GMT +Content-Type: text/html +Content-Length: 166 +Connection: keep-alive + +2025/08/19 14:24:00 [debug] 450062#450062: *2 write new buf t:1 f:0 00005CC70FEC3C00, pos 00005CC70FEC3C00, size: 166 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http write filter: l:0 f:0 s:166 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http output filter "/upload?" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http copy filter: "/upload?" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http postpone filter "/upload?" 00005CC70FEC3D68 +2025/08/19 14:24:00 [debug] 450062#450062: *2 write old buf t:1 f:0 00005CC70FEC3C00, pos 00005CC70FEC3C00, size: 166 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEEA40, size: 104 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEFC80, size: 62 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http write filter: l:1 f:0 s:332 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http write filter limit 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 writev: 332 of 332 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http write filter 0000000000000000 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http copy filter: 0 "/upload?" +2025/08/19 14:24:00 [debug] 450062#450062: *2 http finalize request: 0, "/upload?" a:1, c:2 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http request count:2 blk:0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http finalize request: -4, "/upload?" a:1, c:1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 set http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *2 http close request +2025/08/19 14:24:00 [debug] 450062#450062: *2 http log handler +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FECCA20, unused: 3 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FEC2D90, unused: 8 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FEB7140, unused: 2466 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 hc free: 0000000000000000 +2025/08/19 14:24:00 [debug] 450062#450062: *2 hc busy: 0000000000000000 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 tcp_nodelay +2025/08/19 14:24:00 [debug] 450062#450062: *2 reusable connection: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 event timer add: 6: 65000:194638435 +2025/08/19 14:24:00 [debug] 450062#450062: *2 post event 00005CC70FEFE760 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:24:00 [debug] 450062#450062: posted event 00005CC70FEFE760 +2025/08/19 14:24:00 [debug] 450062#450062: *2 delete posted event 00005CC70FEFE760 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *2 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: eof:0, avail:0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:0004 d:00007723057C51E1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http empty handler +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 64999 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:2005 d:00007723057C51E1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *2 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: eof:1, avail:-1 +2025/08/19 14:24:00 [debug] 450062#450062: *2 recv: fd:6 0 of 1024 +2025/08/19 14:24:00 [info] 450062#450062: *2 client 127.0.0.1 closed keepalive connection +2025/08/19 14:24:00 [debug] 450062#450062: *2 close http connection: 6 +2025/08/19 14:24:00 [debug] 450062#450062: *2 event timer del: 6: 194638435 +2025/08/19 14:24:00 [debug] 450062#450062: *2 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: *2 free: 00005CC70FEAD840, unused: 120 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:24:00 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:24:00 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *4 accept: 127.0.0.1:52780 fd:6 +2025/08/19 14:24:00 [debug] 450062#450062: *4 event timer add: 6: 60000:194633449 +2025/08/19 14:24:00 [debug] 450062#450062: *4 reusable connection: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 12 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http wait request handler +2025/08/19 14:24:00 [debug] 450062#450062: *4 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *4 recv: eof:0, avail:-1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 recv: fd:6 142 of 1024 +2025/08/19 14:24:00 [debug] 450062#450062: *4 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http process request line +2025/08/19 14:24:00 [debug] 450062#450062: *4 http request line: "GET /2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34 HTTP/1.1" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http uri: "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http args: "" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http exten: "" +2025/08/19 14:24:00 [debug] 450062#450062: *4 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http process request header line +2025/08/19 14:24:00 [debug] 450062#450062: *4 http header: "Host: localhost:9001" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http header: "Accept: */*" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http header done +2025/08/19 14:24:00 [debug] 450062#450062: *4 event timer del: 6: 194633449 +2025/08/19 14:24:00 [debug] 450062#450062: *4 generic phase: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 rewrite phase: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 test location: "/health" +2025/08/19 14:24:00 [debug] 450062#450062: *4 test location: "/debug/list" +2025/08/19 14:24:00 [debug] 450062#450062: *4 test location: "/" +2025/08/19 14:24:00 [debug] 450062#450062: *4 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *4 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http cl:-1 max:104857600 +2025/08/19 14:24:00 [debug] 450062#450062: *4 rewrite phase: 3 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http script var +2025/08/19 14:24:00 [debug] 450062#450062: *4 http script var: "GET" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http script value: "DELETE" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http script not equal +2025/08/19 14:24:00 [debug] 450062#450062: *4 http script if +2025/08/19 14:24:00 [debug] 450062#450062: *4 http finalize request: 404, "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" a:1, c:1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http special response: 404, "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http set discard body +2025/08/19 14:24:00 [debug] 450062#450062: *4 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:24:00 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 14:24:00 [debug] 450062#450062: *4 write new buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 164 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http write filter: l:0 f:0 s:164 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http output filter "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http copy filter: "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http postpone filter "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" 00005CC70FEC3300 +2025/08/19 14:24:00 [debug] 450062#450062: *4 write old buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 164 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEF580, size: 100 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEFC80, size: 62 file: 0, size: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http write filter: l:1 f:0 s:326 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http write filter limit 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 writev: 326 of 326 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http write filter 0000000000000000 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http copy filter: 0 "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" +2025/08/19 14:24:00 [debug] 450062#450062: *4 http finalize request: 0, "/2dd6a29f22fab6e9848f45cfd723a542909fbcc060218d546e9210b3436dca34?" a:1, c:1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 set http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *4 http close request +2025/08/19 14:24:00 [debug] 450062#450062: *4 http log handler +2025/08/19 14:24:00 [debug] 450062#450062: *4 free: 00005CC70FECCA20, unused: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 free: 00005CC70FEC2D90, unused: 2456 +2025/08/19 14:24:00 [debug] 450062#450062: *4 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 hc free: 0000000000000000 +2025/08/19 14:24:00 [debug] 450062#450062: *4 hc busy: 0000000000000000 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 tcp_nodelay +2025/08/19 14:24:00 [debug] 450062#450062: *4 reusable connection: 1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 event timer add: 6: 65000:194638449 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:24:00 [debug] 450062#450062: epoll: fd:6 ev:2001 d:00007723057C51E0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 http keepalive handler +2025/08/19 14:24:00 [debug] 450062#450062: *4 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:24:00 [debug] 450062#450062: *4 recv: eof:1, avail:-1 +2025/08/19 14:24:00 [debug] 450062#450062: *4 recv: fd:6 0 of 1024 +2025/08/19 14:24:00 [info] 450062#450062: *4 client 127.0.0.1 closed keepalive connection +2025/08/19 14:24:00 [debug] 450062#450062: *4 close http connection: 6 +2025/08/19 14:24:00 [debug] 450062#450062: *4 event timer del: 6: 194638449 +2025/08/19 14:24:00 [debug] 450062#450062: *4 reusable connection: 0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 free: 00005CC70FEB00A0 +2025/08/19 14:24:00 [debug] 450062#450062: *4 free: 00005CC70FEAD840, unused: 136 +2025/08/19 14:24:00 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:24:00 [debug] 450062#450062: worker cycle +2025/08/19 14:24:00 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:25:33 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:25:33 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *5 accept: 127.0.0.1:34086 fd:6 +2025/08/19 14:25:33 [debug] 450062#450062: *5 event timer add: 6: 60000:194726645 +2025/08/19 14:25:33 [debug] 450062#450062: *5 reusable connection: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 93195 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http wait request handler +2025/08/19 14:25:33 [debug] 450062#450062: *5 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *5 recv: eof:0, avail:-1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 recv: fd:6 84 of 1024 +2025/08/19 14:25:33 [debug] 450062#450062: *5 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http process request line +2025/08/19 14:25:33 [debug] 450062#450062: *5 http request line: "GET /health HTTP/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http uri: "/health" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http args: "" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http exten: "" +2025/08/19 14:25:33 [debug] 450062#450062: *5 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http process request header line +2025/08/19 14:25:33 [debug] 450062#450062: *5 http header: "Host: localhost:9001" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http header: "Accept: */*" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http header done +2025/08/19 14:25:33 [debug] 450062#450062: *5 event timer del: 6: 194726645 +2025/08/19 14:25:33 [debug] 450062#450062: *5 generic phase: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 rewrite phase: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 test location: "/health" +2025/08/19 14:25:33 [debug] 450062#450062: *5 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *5 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:25:33 [debug] 450062#450062: *5 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *5 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *5 using configuration "/health" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http cl:-1 max:104857600 +2025/08/19 14:25:33 [debug] 450062#450062: *5 rewrite phase: 3 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http set discard body +2025/08/19 14:25:33 [debug] 450062#450062: *5 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:25:33 GMT +Content-Type: application/octet-stream +Content-Length: 3 +Connection: keep-alive +Content-Type: text/plain + +2025/08/19 14:25:33 [debug] 450062#450062: *5 write new buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 196 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http write filter: l:0 f:0 s:196 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http output filter "/health?" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http copy filter: "/health?" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http postpone filter "/health?" 00007FFED82973A0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 write old buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 196 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 write new buf t:0 f:0 0000000000000000, pos 00005CC70FEEAB32, size: 3 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http write filter: l:1 f:0 s:199 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http write filter limit 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 writev: 199 of 199 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http write filter 0000000000000000 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http copy filter: 0 "/health?" +2025/08/19 14:25:33 [debug] 450062#450062: *5 http finalize request: 0, "/health?" a:1, c:1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 set http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *5 http close request +2025/08/19 14:25:33 [debug] 450062#450062: *5 http log handler +2025/08/19 14:25:33 [debug] 450062#450062: *5 free: 00005CC70FECCA20, unused: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 free: 00005CC70FEC2D90, unused: 2736 +2025/08/19 14:25:33 [debug] 450062#450062: *5 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 hc free: 0000000000000000 +2025/08/19 14:25:33 [debug] 450062#450062: *5 hc busy: 0000000000000000 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 tcp_nodelay +2025/08/19 14:25:33 [debug] 450062#450062: *5 reusable connection: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 event timer add: 6: 65000:194731645 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:6 ev:2001 d:00007723057C51E1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *5 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *5 recv: eof:1, avail:-1 +2025/08/19 14:25:33 [debug] 450062#450062: *5 recv: fd:6 0 of 1024 +2025/08/19 14:25:33 [info] 450062#450062: *5 client 127.0.0.1 closed keepalive connection +2025/08/19 14:25:33 [debug] 450062#450062: *5 close http connection: 6 +2025/08/19 14:25:33 [debug] 450062#450062: *5 event timer del: 6: 194731645 +2025/08/19 14:25:33 [debug] 450062#450062: *5 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: *5 free: 00005CC70FEAD840, unused: 136 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:25:33 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:25:33 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *6 accept: 127.0.0.1:34096 fd:6 +2025/08/19 14:25:33 [debug] 450062#450062: *6 event timer add: 6: 60000:194726962 +2025/08/19 14:25:33 [debug] 450062#450062: *6 reusable connection: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 316 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http wait request handler +2025/08/19 14:25:33 [debug] 450062#450062: *6 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: eof:0, avail:-1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: fd:6 1024 of 1024 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: avail:112 +2025/08/19 14:25:33 [debug] 450062#450062: *6 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http process request line +2025/08/19 14:25:33 [debug] 450062#450062: *6 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http uri: "/upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http args: "" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http exten: "" +2025/08/19 14:25:33 [debug] 450062#450062: *6 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http process request header line +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "Host: localhost:9001" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "Accept: */*" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzYzc5MTUxY2EyNDgyMzg3Nzg5YzZkNjU2MjA5ZTk0MWQxYjk2NjE4NWFmMmQxOGJiNDgyMWZjMTU3MDU0Yjk2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjc5MzMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIwNDQzMzFjNmE5ODRlNThiMjU4MzQzYTA5M2EwYTViOTYxY2U2YzhmYzI3YWQ2YzE1MzUxNDQ4MTRiMTdjZjA0Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTUzMyJdXSwiY29udGVudCI6IiIsInNpZyI6IjA0OWM1MTkyZDYyZjUxNTc3NzNkYTQwNDU3MmM1ODg1NmY0MjNmNjFlNjQzODQ1NGY5YTdlZDYwYjk5ZTFkNjg0MmZmZWJlNTBkNTFjNzQ4OTA5OTdiM2ZkNWY5YTFmYjZlMTNkNjg0OTgwNzI4OWY1MTUyMmJkZGEzNTQ2YTcyIn0=" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "Content-Type: text/plain" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "Content-Disposition: attachment; filename="test_blob_1755627933.txt"" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header: "Content-Length: 296" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http header done +2025/08/19 14:25:33 [debug] 450062#450062: *6 event timer del: 6: 194726962 +2025/08/19 14:25:33 [debug] 450062#450062: *6 generic phase: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 rewrite phase: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 test location: "/health" +2025/08/19 14:25:33 [debug] 450062#450062: *6 test location: "/upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *6 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:25:33 [debug] 450062#450062: *6 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *6 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *6 using configuration "/upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http cl:296 max:104857600 +2025/08/19 14:25:33 [debug] 450062#450062: *6 rewrite phase: 3 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "PUT" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script regex: "^(PUT)$" +2025/08/19 14:25:33 [notice] 450062#450062: *6 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script if +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script if: false +2025/08/19 14:25:33 [debug] 450062#450062: *6 post rewrite phase: 4 +2025/08/19 14:25:33 [debug] 450062#450062: *6 generic phase: 5 +2025/08/19 14:25:33 [debug] 450062#450062: *6 generic phase: 6 +2025/08/19 14:25:33 [debug] 450062#450062: *6 generic phase: 7 +2025/08/19 14:25:33 [debug] 450062#450062: *6 access phase: 8 +2025/08/19 14:25:33 [debug] 450062#450062: *6 access phase: 9 +2025/08/19 14:25:33 [debug] 450062#450062: *6 access phase: 10 +2025/08/19 14:25:33 [debug] 450062#450062: *6 post access phase: 11 +2025/08/19 14:25:33 [debug] 450062#450062: *6 generic phase: 12 +2025/08/19 14:25:33 [debug] 450062#450062: *6 generic phase: 13 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http client request body preread 184 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http request body content length filter +2025/08/19 14:25:33 [debug] 450062#450062: *6 http body new buf t:1 f:0 00005CC70FEB03E8, pos 00005CC70FEB03E8, size: 184 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http read client request body +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: eof:0, avail:112 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: fd:6 112 of 112 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: avail:0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http client request body recv 112 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http body new buf t:1 f:0 00005CC70FEC3820, pos 00005CC70FEC3820, size: 112 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http client request body rest 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http init upstream, client timer: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:25:33 [debug] 450062#450062: *6 posix_memalign: 00005CC70FEB7140:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "QUERY_STRING" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "QUERY_STRING: " +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "REQUEST_METHOD" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "PUT" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "CONTENT_TYPE" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "text/plain" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "CONTENT_LENGTH" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "296" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SCRIPT_NAME" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "/upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "REQUEST_URI" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "/upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "DOCUMENT_URI" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "/upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "./blobs" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "HTTP/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "REQUEST_SCHEME" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "http" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "CGI/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "nginx/" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "1.18.0" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "REMOTE_ADDR" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "127.0.0.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "REMOTE_PORT" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "34096" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "REMOTE_PORT: 34096" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SERVER_ADDR" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "127.0.0.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SERVER_PORT" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "9001" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SERVER_NAME" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "localhost" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "REDIRECT_STATUS" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "200" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script var: "./blobs" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http script copy: "/ginxsom.fcgi" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIzYzc5MTUxY2EyNDgyMzg3Nzg5YzZkNjU2MjA5ZTk0MWQxYjk2NjE4NWFmMmQxOGJiNDgyMWZjMTU3MDU0Yjk2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjc5MzMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIwNDQzMzFjNmE5ODRlNThiMjU4MzQzYTA5M2EwYTViOTYxY2U2YzhmYzI3YWQ2YzE1MzUxNDQ4MTRiMTdjZjA0Il0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTUzMyJdXSwiY29udGVudCI6IiIsInNpZyI6IjA0OWM1MTkyZDYyZjUxNTc3NzNkYTQwNDU3MmM1ODg1NmY0MjNmNjFlNjQzODQ1NGY5YTdlZDYwYjk5ZTFkNjg0MmZmZWJlNTBkNTFjNzQ4OTA5OTdiM2ZkNWY5YTFmYjZlMTNkNjg0OTgwNzI4OWY1MTUyMmJkZGEzNTQ2YTcyIn0=" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755627933.txt"" +2025/08/19 14:25:33 [debug] 450062#450062: *6 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http cleanup add: 00005CC70FEC3B70 +2025/08/19 14:25:33 [debug] 450062#450062: *6 get rr peer, try: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 stream socket 10 +2025/08/19 14:25:33 [debug] 450062#450062: *6 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:25:33 [debug] 450062#450062: *6 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #7 +2025/08/19 14:25:33 [crit] 450062#450062: *6 connect() to unix:/tmp/ginxsom-fcgi.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/08/19 14:25:33 [debug] 450062#450062: *6 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http upstream connect: -5 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http next upstream, 2 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free rr peer 1 4 +2025/08/19 14:25:33 [debug] 450062#450062: *6 finalize http upstream request: 502 +2025/08/19 14:25:33 [debug] 450062#450062: *6 finalize http fastcgi request +2025/08/19 14:25:33 [debug] 450062#450062: *6 http finalize request: 502, "/upload?" a:1, c:2 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http special response: 502, "/upload?" +2025/08/19 14:25:33 [debug] 450062#450062: *6 HTTP/1.1 502 Bad Gateway +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:25:33 GMT +Content-Type: text/html +Content-Length: 166 +Connection: keep-alive + +2025/08/19 14:25:33 [debug] 450062#450062: *6 write new buf t:1 f:0 00005CC70FEC3C00, pos 00005CC70FEC3C00, size: 166 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http write filter: l:0 f:0 s:166 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http output filter "/upload?" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http copy filter: "/upload?" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http postpone filter "/upload?" 00005CC70FEC3D68 +2025/08/19 14:25:33 [debug] 450062#450062: *6 write old buf t:1 f:0 00005CC70FEC3C00, pos 00005CC70FEC3C00, size: 166 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEEA40, size: 104 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEFC80, size: 62 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http write filter: l:1 f:0 s:332 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http write filter limit 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 writev: 332 of 332 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http write filter 0000000000000000 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http copy filter: 0 "/upload?" +2025/08/19 14:25:33 [debug] 450062#450062: *6 http finalize request: 0, "/upload?" a:1, c:2 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http request count:2 blk:0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http finalize request: -4, "/upload?" a:1, c:1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 set http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *6 http close request +2025/08/19 14:25:33 [debug] 450062#450062: *6 http log handler +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FECCA20, unused: 3 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FEC2D90, unused: 8 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FEB7140, unused: 2466 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 hc free: 0000000000000000 +2025/08/19 14:25:33 [debug] 450062#450062: *6 hc busy: 0000000000000000 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 tcp_nodelay +2025/08/19 14:25:33 [debug] 450062#450062: *6 reusable connection: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 event timer add: 6: 65000:194731963 +2025/08/19 14:25:33 [debug] 450062#450062: *6 post event 00005CC70FEFE760 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:25:33 [debug] 450062#450062: posted event 00005CC70FEFE760 +2025/08/19 14:25:33 [debug] 450062#450062: *6 delete posted event 00005CC70FEFE760 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *6 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: eof:0, avail:0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:6 ev:2005 d:00007723057C51E0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *6 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: eof:1, avail:-1 +2025/08/19 14:25:33 [debug] 450062#450062: *6 recv: fd:6 0 of 1024 +2025/08/19 14:25:33 [info] 450062#450062: *6 client 127.0.0.1 closed keepalive connection +2025/08/19 14:25:33 [debug] 450062#450062: *6 close http connection: 6 +2025/08/19 14:25:33 [debug] 450062#450062: *6 event timer del: 6: 194731963 +2025/08/19 14:25:33 [debug] 450062#450062: *6 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: *6 free: 00005CC70FEAD840, unused: 120 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 2 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:25:33 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:25:33 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *8 accept: 127.0.0.1:34102 fd:6 +2025/08/19 14:25:33 [debug] 450062#450062: *8 event timer add: 6: 60000:194726978 +2025/08/19 14:25:33 [debug] 450062#450062: *8 reusable connection: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 13 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http wait request handler +2025/08/19 14:25:33 [debug] 450062#450062: *8 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *8 recv: eof:0, avail:-1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 recv: fd:6 142 of 1024 +2025/08/19 14:25:33 [debug] 450062#450062: *8 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http process request line +2025/08/19 14:25:33 [debug] 450062#450062: *8 http request line: "GET /044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04 HTTP/1.1" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http uri: "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http args: "" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http exten: "" +2025/08/19 14:25:33 [debug] 450062#450062: *8 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http process request header line +2025/08/19 14:25:33 [debug] 450062#450062: *8 http header: "Host: localhost:9001" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http header: "Accept: */*" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http header done +2025/08/19 14:25:33 [debug] 450062#450062: *8 event timer del: 6: 194726978 +2025/08/19 14:25:33 [debug] 450062#450062: *8 generic phase: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 rewrite phase: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 test location: "/health" +2025/08/19 14:25:33 [debug] 450062#450062: *8 test location: "/debug/list" +2025/08/19 14:25:33 [debug] 450062#450062: *8 test location: "/" +2025/08/19 14:25:33 [debug] 450062#450062: *8 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *8 using configuration "^/([a-f0-9]{64}).*$" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http cl:-1 max:104857600 +2025/08/19 14:25:33 [debug] 450062#450062: *8 rewrite phase: 3 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http script var +2025/08/19 14:25:33 [debug] 450062#450062: *8 http script var: "GET" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http script value: "DELETE" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http script not equal +2025/08/19 14:25:33 [debug] 450062#450062: *8 http script if +2025/08/19 14:25:33 [debug] 450062#450062: *8 http finalize request: 404, "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" a:1, c:1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http special response: 404, "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http set discard body +2025/08/19 14:25:33 [debug] 450062#450062: *8 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:25:33 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/08/19 14:25:33 [debug] 450062#450062: *8 write new buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 164 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http write filter: l:0 f:0 s:164 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http output filter "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http copy filter: "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http postpone filter "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" 00005CC70FEC3300 +2025/08/19 14:25:33 [debug] 450062#450062: *8 write old buf t:1 f:0 00005CC70FEC3170, pos 00005CC70FEC3170, size: 164 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEF580, size: 100 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEFC80, size: 62 file: 0, size: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http write filter: l:1 f:0 s:326 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http write filter limit 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 writev: 326 of 326 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http write filter 0000000000000000 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http copy filter: 0 "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" +2025/08/19 14:25:33 [debug] 450062#450062: *8 http finalize request: 0, "/044331c6a984e58b258343a093a0a5b961ce6c8fc27ad6c1535144814b17cf04?" a:1, c:1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 set http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *8 http close request +2025/08/19 14:25:33 [debug] 450062#450062: *8 http log handler +2025/08/19 14:25:33 [debug] 450062#450062: *8 free: 00005CC70FECCA20, unused: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 free: 00005CC70FEC2D90, unused: 2456 +2025/08/19 14:25:33 [debug] 450062#450062: *8 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 hc free: 0000000000000000 +2025/08/19 14:25:33 [debug] 450062#450062: *8 hc busy: 0000000000000000 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 tcp_nodelay +2025/08/19 14:25:33 [debug] 450062#450062: *8 reusable connection: 1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 event timer add: 6: 65000:194731978 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:25:33 [debug] 450062#450062: epoll: fd:6 ev:2001 d:00007723057C51E1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 http keepalive handler +2025/08/19 14:25:33 [debug] 450062#450062: *8 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:25:33 [debug] 450062#450062: *8 recv: eof:1, avail:-1 +2025/08/19 14:25:33 [debug] 450062#450062: *8 recv: fd:6 0 of 1024 +2025/08/19 14:25:33 [info] 450062#450062: *8 client 127.0.0.1 closed keepalive connection +2025/08/19 14:25:33 [debug] 450062#450062: *8 close http connection: 6 +2025/08/19 14:25:33 [debug] 450062#450062: *8 event timer del: 6: 194731978 +2025/08/19 14:25:33 [debug] 450062#450062: *8 reusable connection: 0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 free: 00005CC70FEB00A0 +2025/08/19 14:25:33 [debug] 450062#450062: *8 free: 00005CC70FEAD840, unused: 136 +2025/08/19 14:25:33 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:25:33 [debug] 450062#450062: worker cycle +2025/08/19 14:25:33 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:29:42 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:29:42 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:29:42 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:29:42 [debug] 450062#450062: *9 accept: 127.0.0.1:54838 fd:6 +2025/08/19 14:29:42 [debug] 450062#450062: *9 event timer add: 6: 60000:194975579 +2025/08/19 14:29:42 [debug] 450062#450062: *9 reusable connection: 1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:29:42 [debug] 450062#450062: timer delta: 248600 +2025/08/19 14:29:42 [debug] 450062#450062: worker cycle +2025/08/19 14:29:42 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:29:42 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http wait request handler +2025/08/19 14:29:42 [debug] 450062#450062: *9 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: eof:0, avail:-1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: fd:6 1024 of 1024 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: avail:112 +2025/08/19 14:29:42 [debug] 450062#450062: *9 reusable connection: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http process request line +2025/08/19 14:29:42 [debug] 450062#450062: *9 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http uri: "/upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http args: "" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http exten: "" +2025/08/19 14:29:42 [debug] 450062#450062: *9 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http process request header line +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "Host: localhost:9001" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "Accept: */*" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxYjZkYTcwY2E5OWYyZmIxMDNlNGRiZmU5YmI0YWNkZThkZWZkZTQ4MzA4MDI2ZTBkYjY1ZGExNjdmMWQ1NTFkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjgxODIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJkM2E2OTE4YWJmNGMyY2U5YjJiMGY2MWRmZThjNzMzYmY4MjE1ZjM4N2ZjMDAwNzNlOTE2ZjJkMWRkODEwNTIzIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTc4MiJdXSwiY29udGVudCI6IiIsInNpZyI6ImNjNTk4Y2RkOWFjNTMyODVmYzU4YTBlOWIwMzIwMjAxMmEzMGMwNzExYzRhZmVjNWJlMzUzOTJlZWQ3OTkyNzA3NjIzNjQ5MTE4N2I1OWYwMjBlMjdhMzU1ZGJiMjliOWFkMzJmYjQ5ODEyZjEzMWYxOTFmNDEzNjdiMDYyZTBhIn0=" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "Content-Type: text/plain" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "Content-Disposition: attachment; filename="test_blob_1755628182.txt"" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header: "Content-Length: 296" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http header done +2025/08/19 14:29:42 [debug] 450062#450062: *9 event timer del: 6: 194975579 +2025/08/19 14:29:42 [debug] 450062#450062: *9 generic phase: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 rewrite phase: 1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 test location: "/health" +2025/08/19 14:29:42 [debug] 450062#450062: *9 test location: "/upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:29:42 [debug] 450062#450062: *9 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:29:42 [debug] 450062#450062: *9 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:29:42 [debug] 450062#450062: *9 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:29:42 [debug] 450062#450062: *9 using configuration "/upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http cl:296 max:104857600 +2025/08/19 14:29:42 [debug] 450062#450062: *9 rewrite phase: 3 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "PUT" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script regex: "^(PUT)$" +2025/08/19 14:29:42 [notice] 450062#450062: *9 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script if +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script if: false +2025/08/19 14:29:42 [debug] 450062#450062: *9 post rewrite phase: 4 +2025/08/19 14:29:42 [debug] 450062#450062: *9 generic phase: 5 +2025/08/19 14:29:42 [debug] 450062#450062: *9 generic phase: 6 +2025/08/19 14:29:42 [debug] 450062#450062: *9 generic phase: 7 +2025/08/19 14:29:42 [debug] 450062#450062: *9 access phase: 8 +2025/08/19 14:29:42 [debug] 450062#450062: *9 access phase: 9 +2025/08/19 14:29:42 [debug] 450062#450062: *9 access phase: 10 +2025/08/19 14:29:42 [debug] 450062#450062: *9 post access phase: 11 +2025/08/19 14:29:42 [debug] 450062#450062: *9 generic phase: 12 +2025/08/19 14:29:42 [debug] 450062#450062: *9 generic phase: 13 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http client request body preread 184 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http request body content length filter +2025/08/19 14:29:42 [debug] 450062#450062: *9 http body new buf t:1 f:0 00005CC70FEB03E8, pos 00005CC70FEB03E8, size: 184 file: 0, size: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http read client request body +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: eof:0, avail:112 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: fd:6 112 of 112 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: avail:0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http client request body recv 112 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http body new buf t:1 f:0 00005CC70FEC3820, pos 00005CC70FEC3820, size: 112 file: 0, size: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http client request body rest 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http init upstream, client timer: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:29:42 [debug] 450062#450062: *9 posix_memalign: 00005CC70FEB7140:4096 @16 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "QUERY_STRING" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "QUERY_STRING: " +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "REQUEST_METHOD" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "PUT" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "CONTENT_TYPE" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "text/plain" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "CONTENT_LENGTH" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "296" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SCRIPT_NAME" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "/upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "REQUEST_URI" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "/upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "DOCUMENT_URI" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "/upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "./blobs" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "HTTP/1.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "REQUEST_SCHEME" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "http" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "CGI/1.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "nginx/" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "1.18.0" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "REMOTE_ADDR" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "127.0.0.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "REMOTE_PORT" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "54838" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "REMOTE_PORT: 54838" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SERVER_ADDR" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "127.0.0.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SERVER_PORT" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "9001" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SERVER_NAME" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "localhost" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "REDIRECT_STATUS" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "200" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script var: "./blobs" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http script copy: "/ginxsom.fcgi" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxYjZkYTcwY2E5OWYyZmIxMDNlNGRiZmU5YmI0YWNkZThkZWZkZTQ4MzA4MDI2ZTBkYjY1ZGExNjdmMWQ1NTFkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjgxODIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJkM2E2OTE4YWJmNGMyY2U5YjJiMGY2MWRmZThjNzMzYmY4MjE1ZjM4N2ZjMDAwNzNlOTE2ZjJkMWRkODEwNTIzIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTc4MiJdXSwiY29udGVudCI6IiIsInNpZyI6ImNjNTk4Y2RkOWFjNTMyODVmYzU4YTBlOWIwMzIwMjAxMmEzMGMwNzExYzRhZmVjNWJlMzUzOTJlZWQ3OTkyNzA3NjIzNjQ5MTE4N2I1OWYwMjBlMjdhMzU1ZGJiMjliOWFkMzJmYjQ5ODEyZjEzMWYxOTFmNDEzNjdiMDYyZTBhIn0=" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755628182.txt"" +2025/08/19 14:29:42 [debug] 450062#450062: *9 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http cleanup add: 00005CC70FEC3B70 +2025/08/19 14:29:42 [debug] 450062#450062: *9 get rr peer, try: 1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 stream socket 10 +2025/08/19 14:29:42 [debug] 450062#450062: *9 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:29:42 [debug] 450062#450062: *9 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #10 +2025/08/19 14:29:42 [crit] 450062#450062: *9 connect() to unix:/tmp/ginxsom-fcgi.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/08/19 14:29:42 [debug] 450062#450062: *9 reusable connection: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http upstream connect: -5 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http next upstream, 2 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free rr peer 1 4 +2025/08/19 14:29:42 [debug] 450062#450062: *9 finalize http upstream request: 502 +2025/08/19 14:29:42 [debug] 450062#450062: *9 finalize http fastcgi request +2025/08/19 14:29:42 [debug] 450062#450062: *9 http finalize request: 502, "/upload?" a:1, c:2 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http special response: 502, "/upload?" +2025/08/19 14:29:42 [debug] 450062#450062: *9 HTTP/1.1 502 Bad Gateway +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:29:42 GMT +Content-Type: text/html +Content-Length: 166 +Connection: keep-alive + +2025/08/19 14:29:42 [debug] 450062#450062: *9 write new buf t:1 f:0 00005CC70FEC3C00, pos 00005CC70FEC3C00, size: 166 file: 0, size: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http write filter: l:0 f:0 s:166 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http output filter "/upload?" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http copy filter: "/upload?" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http postpone filter "/upload?" 00005CC70FEC3D68 +2025/08/19 14:29:42 [debug] 450062#450062: *9 write old buf t:1 f:0 00005CC70FEC3C00, pos 00005CC70FEC3C00, size: 166 file: 0, size: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEEA40, size: 104 file: 0, size: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 write new buf t:0 f:0 0000000000000000, pos 00005CC705DEFC80, size: 62 file: 0, size: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http write filter: l:1 f:0 s:332 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http write filter limit 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 writev: 332 of 332 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http write filter 0000000000000000 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http copy filter: 0 "/upload?" +2025/08/19 14:29:42 [debug] 450062#450062: *9 http finalize request: 0, "/upload?" a:1, c:2 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http request count:2 blk:0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http finalize request: -4, "/upload?" a:1, c:1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 set http keepalive handler +2025/08/19 14:29:42 [debug] 450062#450062: *9 http close request +2025/08/19 14:29:42 [debug] 450062#450062: *9 http log handler +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FECCA20, unused: 3 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FEC2D90, unused: 8 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FEB7140, unused: 2466 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FEB00A0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 hc free: 0000000000000000 +2025/08/19 14:29:42 [debug] 450062#450062: *9 hc busy: 0000000000000000 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 tcp_nodelay +2025/08/19 14:29:42 [debug] 450062#450062: *9 reusable connection: 1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 event timer add: 6: 65000:194980579 +2025/08/19 14:29:42 [debug] 450062#450062: *9 post event 00005CC70FEFE760 +2025/08/19 14:29:42 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:29:42 [debug] 450062#450062: posted event 00005CC70FEFE760 +2025/08/19 14:29:42 [debug] 450062#450062: *9 delete posted event 00005CC70FEFE760 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http keepalive handler +2025/08/19 14:29:42 [debug] 450062#450062: *9 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: eof:0, avail:0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FEB00A0 +2025/08/19 14:29:42 [debug] 450062#450062: worker cycle +2025/08/19 14:29:42 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:29:42 [debug] 450062#450062: epoll: fd:6 ev:0004 d:00007723057C51E0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http empty handler +2025/08/19 14:29:42 [debug] 450062#450062: timer delta: 2 +2025/08/19 14:29:42 [debug] 450062#450062: worker cycle +2025/08/19 14:29:42 [debug] 450062#450062: epoll timer: 64998 +2025/08/19 14:29:42 [debug] 450062#450062: epoll: fd:6 ev:2005 d:00007723057C51E0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 http keepalive handler +2025/08/19 14:29:42 [debug] 450062#450062: *9 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: eof:1, avail:-1 +2025/08/19 14:29:42 [debug] 450062#450062: *9 recv: fd:6 0 of 1024 +2025/08/19 14:29:42 [info] 450062#450062: *9 client 127.0.0.1 closed keepalive connection +2025/08/19 14:29:42 [debug] 450062#450062: *9 close http connection: 6 +2025/08/19 14:29:42 [debug] 450062#450062: *9 event timer del: 6: 194980579 +2025/08/19 14:29:42 [debug] 450062#450062: *9 reusable connection: 0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FEB00A0 +2025/08/19 14:29:42 [debug] 450062#450062: *9 free: 00005CC70FEAD840, unused: 120 +2025/08/19 14:29:42 [debug] 450062#450062: timer delta: 0 +2025/08/19 14:29:42 [debug] 450062#450062: worker cycle +2025/08/19 14:29:42 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:32:12 [debug] 450062#450062: epoll: fd:5 ev:0001 d:00007723057C5010 +2025/08/19 14:32:12 [debug] 450062#450062: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:32:12 [debug] 450062#450062: posix_memalign: 00005CC70FEAD840:512 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 accept: 127.0.0.1:49020 fd:6 +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer add: 6: 60000:195125704 +2025/08/19 14:32:12 [debug] 450062#450062: *11 reusable connection: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:32:12 [debug] 450062#450062: timer delta: 150123 +2025/08/19 14:32:12 [debug] 450062#450062: worker cycle +2025/08/19 14:32:12 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:32:12 [debug] 450062#450062: epoll: fd:6 ev:0001 d:00007723057C51E1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http wait request handler +2025/08/19 14:32:12 [debug] 450062#450062: *11 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: eof:0, avail:-1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: fd:6 1024 of 1024 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: avail:112 +2025/08/19 14:32:12 [debug] 450062#450062: *11 reusable connection: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 posix_memalign: 00005CC70FECCA20:4096 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http process request line +2025/08/19 14:32:12 [debug] 450062#450062: *11 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http uri: "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http args: "" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http exten: "" +2025/08/19 14:32:12 [debug] 450062#450062: *11 posix_memalign: 00005CC70FEC2D90:4096 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http process request header line +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "Host: localhost:9001" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "Accept: */*" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI0YmMwYzlhODQ3NGJlNzFhZGZjZDc3Yzk4NzE3MjljMGFlNzcxMzNkMDgyZDc4NDAwZjdmMGRmODI5MmY0NWFkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjgzMzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI0NjI3MjI1ZDQ4YjA0OGJiOTA1YzFkYTJkOTQxNmNkZTJiYWU2MTU5MDNiNTJiZTRhMjBkNmQ2MGMwNWE4MDIzIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTkzMiJdXSwiY29udGVudCI6IiIsInNpZyI6IjRhZDhiZTkzMjc5MzkxYWY3Y2ZlNWJiYjFmOWIyODE3NzQzOWUyOGNkODMxY2QyMzNjZjkwN2IwNWM2YzZiOTdjYjgxYmJjZTE2NWNmZjE4ZWY0Y2I1NTk1MWVmY2U3ZTZkMjYwMWI0Yjk5ZjcxMWRhYjU5YWU2MjQ2NGQ3YzU0In0=" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "Content-Type: text/plain" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "Content-Disposition: attachment; filename="test_blob_1755628332.txt"" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header: "Content-Length: 296" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http header done +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer del: 6: 195125704 +2025/08/19 14:32:12 [debug] 450062#450062: *11 generic phase: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 rewrite phase: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 test location: "/health" +2025/08/19 14:32:12 [debug] 450062#450062: *11 test location: "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:32:12 [debug] 450062#450062: *11 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:32:12 [debug] 450062#450062: *11 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:32:12 [debug] 450062#450062: *11 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:32:12 [debug] 450062#450062: *11 using configuration "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http cl:296 max:104857600 +2025/08/19 14:32:12 [debug] 450062#450062: *11 rewrite phase: 3 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "PUT" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script regex: "^(PUT)$" +2025/08/19 14:32:12 [notice] 450062#450062: *11 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script if +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script if: false +2025/08/19 14:32:12 [debug] 450062#450062: *11 post rewrite phase: 4 +2025/08/19 14:32:12 [debug] 450062#450062: *11 generic phase: 5 +2025/08/19 14:32:12 [debug] 450062#450062: *11 generic phase: 6 +2025/08/19 14:32:12 [debug] 450062#450062: *11 generic phase: 7 +2025/08/19 14:32:12 [debug] 450062#450062: *11 access phase: 8 +2025/08/19 14:32:12 [debug] 450062#450062: *11 access phase: 9 +2025/08/19 14:32:12 [debug] 450062#450062: *11 access phase: 10 +2025/08/19 14:32:12 [debug] 450062#450062: *11 post access phase: 11 +2025/08/19 14:32:12 [debug] 450062#450062: *11 generic phase: 12 +2025/08/19 14:32:12 [debug] 450062#450062: *11 generic phase: 13 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http client request body preread 184 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http request body content length filter +2025/08/19 14:32:12 [debug] 450062#450062: *11 http body new buf t:1 f:0 00005CC70FEB03E8, pos 00005CC70FEB03E8, size: 184 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http read client request body +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: eof:0, avail:112 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: fd:6 112 of 112 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: avail:0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http client request body recv 112 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http body new buf t:1 f:0 00005CC70FEC3820, pos 00005CC70FEC3820, size: 112 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http client request body rest 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http init upstream, client timer: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:32:12 [debug] 450062#450062: *11 posix_memalign: 00005CC70FEB7140:4096 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "QUERY_STRING" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "QUERY_STRING: " +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "REQUEST_METHOD" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "PUT" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "CONTENT_TYPE" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "text/plain" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "CONTENT_LENGTH" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "296" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SCRIPT_NAME" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "REQUEST_URI" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "DOCUMENT_URI" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "./blobs" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "HTTP/1.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "REQUEST_SCHEME" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "http" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "CGI/1.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "nginx/" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "1.18.0" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "REMOTE_ADDR" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "127.0.0.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "REMOTE_PORT" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "49020" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "REMOTE_PORT: 49020" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SERVER_ADDR" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "127.0.0.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SERVER_PORT" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "9001" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SERVER_NAME" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "localhost" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "REDIRECT_STATUS" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "200" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script var: "./blobs" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http script copy: "/ginxsom.fcgi" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI0YmMwYzlhODQ3NGJlNzFhZGZjZDc3Yzk4NzE3MjljMGFlNzcxMzNkMDgyZDc4NDAwZjdmMGRmODI5MmY0NWFkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjgzMzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI0NjI3MjI1ZDQ4YjA0OGJiOTA1YzFkYTJkOTQxNmNkZTJiYWU2MTU5MDNiNTJiZTRhMjBkNmQ2MGMwNWE4MDIzIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTkzMiJdXSwiY29udGVudCI6IiIsInNpZyI6IjRhZDhiZTkzMjc5MzkxYWY3Y2ZlNWJiYjFmOWIyODE3NzQzOWUyOGNkODMxY2QyMzNjZjkwN2IwNWM2YzZiOTdjYjgxYmJjZTE2NWNmZjE4ZWY0Y2I1NTk1MWVmY2U3ZTZkMjYwMWI0Yjk5ZjcxMWRhYjU5YWU2MjQ2NGQ3YzU0In0=" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755628332.txt"" +2025/08/19 14:32:12 [debug] 450062#450062: *11 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http cleanup add: 00005CC70FEC3B70 +2025/08/19 14:32:12 [debug] 450062#450062: *11 get rr peer, try: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 stream socket 10 +2025/08/19 14:32:12 [debug] 450062#450062: *11 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:32:12 [debug] 450062#450062: *11 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #12 +2025/08/19 14:32:12 [debug] 450062#450062: *11 connected +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream connect: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 posix_memalign: 00005CC70FE96F20:128 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream send request +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream send request body +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer buf fl:0 s:1304 +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer buf fl:0 s:184 +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer buf fl:0 s:8 +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer buf fl:0 s:112 +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer buf fl:0 s:8 +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer in: 00005CC70FEC3C00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 writev: 1616 of 1616 +2025/08/19 14:32:12 [debug] 450062#450062: *11 chain writer out: 0000000000000000 +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer add: 10: 60000:195125705 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http request count:2 blk:0 +2025/08/19 14:32:12 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:32:12 [debug] 450062#450062: worker cycle +2025/08/19 14:32:12 [debug] 450062#450062: epoll timer: 60000 +2025/08/19 14:32:12 [debug] 450062#450062: epoll: fd:6 ev:0004 d:00007723057C51E1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http run request: "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream check client, write event:1, "/upload" +2025/08/19 14:32:12 [debug] 450062#450062: epoll: fd:10 ev:0004 d:00007723057C52C9 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream request: "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream dummy handler +2025/08/19 14:32:12 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:32:12 [debug] 450062#450062: worker cycle +2025/08/19 14:32:12 [debug] 450062#450062: epoll timer: 59999 +2025/08/19 14:32:12 [debug] 450062#450062: epoll: fd:10 ev:2005 d:00007723057C52C9 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream request: "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream process header +2025/08/19 14:32:12 [debug] 450062#450062: *11 malloc: 00005CC70FEB8150:4096 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: eof:1, avail:-1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: fd:10 3504 of 4096 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 01 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 06 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 01 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 0D +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 8A +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 06 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record length: 3466 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "LOG: [2025-08-19 14:32:12] PUT /upload - Auth: pending - Status: 0" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI0YmMwYzlhODQ3NGJlNzFhZGZjZDc3Yzk4NzE3MjljMGFlNzcxMzNkMDgyZDc4NDAwZjdmMGRmODI5MmY0NWFkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjgzMzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI0NjI3MjI1ZDQ4YjA0OGJiOTA1YzFkYTJkOTQxNmNkZTJiYWU2MTU5MDNiNTJiZTRhMjBkNmQ2MGMwNWE4MDIzIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTkzMiJdXSwiY29udGVudCI6IiIsInNpZyI6IjRhZDhiZTkzMjc5MzkxYWY3Y2ZlNWJiYjFmOWIyODE3NzQzOWUyOGNkODMxY2QyMzNjZjkwN2IwNWM2YzZiOTdjYjgxYmJjZTE2NWNmZjE4ZWY0Y2I1NTk1MWVmY2U3ZTZkMjYwMWI0Yjk5ZjcxMWRhYjU5YWU2MjQ2NGQ3YzU0In0=" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "LOG: [2025-08-19 14:32:12] PUT /upload - Auth: auth_provided - Status: 0" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: Successfully read DEBUG: Calculated SHA-256: 4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request_with_rules called - method: upload, file_hash: 4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023, mime_type: text/plain, file_size: 296" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: Authorization header provided, starting basic nostr authentication" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request ENTRY - method: upload, hash: 4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - calling parse_authorization_header" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI0YmMwYzlhODQ3NGJl..." +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 posix_memalign: 00005CC70FEB9160:4096 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - calling cJSON_Parse on: {"kind":24242,"id":"4bc0c9a8474be71adfcd77c9871729c0ae77133d082d78400f7f0df8292f45ad","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1755628332,"tags":[["t","upload"],["x","4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023"],["expiration","1755631932"]],"content":"","sig":"4ad8be93279391af7cfe5bbb1f9b28177439e28cd831cd233cf907b05c6c6b97cb81bbce165cff18ef4cb55951efce7e6d2601b4b99f711dab59ae62464d7c54"}" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - cJSON_Parse succeeded, event parsed" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - Event fields before validation:" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: id: 4bc0c9a8474be71adfcd77c9871729c0ae77133d082d78400f7f0df8292f45ad" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: sig: 4ad8be93279391af7cfe5bbb1f9b28177439e28cd831cd233cf907b05c6c6b97cb81bbce165cff18ef4cb55951efce7e6d2601b4b99f711dab59ae62464d7c54" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: kind: 24242" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: created_at: 1755628332" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - calling nostr_validate_event" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - nostr_validate_event returned: -32" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - Nostr event validation FAILED: -32 (Event has invalid public key)" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "DEBUG: authenticate_request - Pubkey length: DEBUG: Basic nostr authentication failed: -32 (Event has invalid public key)" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header: "Content-Type: application/json" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi parser: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi header done +2025/08/19 14:32:12 [debug] 450062#450062: *11 posix_memalign: 00005CC70FEBA170:4096 @16 +2025/08/19 14:32:12 [debug] 450062#450062: *11 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:32:12 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 14:32:12] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI0YmMwYzlhODQ3NGJlNzFhZGZjZDc3Yzk4NzE3MjljMGFlNzcxMzNkMDgyZDc4NDAwZjdmMGRmODI5MmY0NWFkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjgzMzIsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI0NjI3MjI1ZDQ4YjA0OGJiOTA1YzFkYTJkOTQxNmNkZTJiYWU2MTU5MDNiNTJiZTRhMjBkNmQ2MGMwNWE4MDIzIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMTkzMiJdXSwiY29udGVudCI6IiIsInNpZyI6IjRhZDhiZTkzMjc5MzkxYWY3Y2ZlNWJiYjFmOWIyODE3NzQzOWUyOGNkODMxY2QyMzNjZjkwN2IwNWM2YzZiOTdjYjgxYmJjZTE2NWNmZjE4ZWY0Y2I1NTk1MWVmY2U3ZTZkMjYwMWI0Yjk5ZjcxMWRhYjU5YWU2MjQ2NGQ3YzU0In0= +LOG: [2025-08-19 14:32:12] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG: Successfully read DEBUG: Calculated SHA-256: 4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023 +DEBUG: authenticate_request_with_rules called - method: upload, file_hash: 4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023, mime_type: text/plain, file_size: 296 +DEBUG: Authorization header provided, starting basic nostr authentication +DEBUG: authenticate_request ENTRY - method: upload, hash: 4627225d48b048bb905c1da2d9416cde2bae615903b52be4a20d6d60c05a8023 +DEBUG: authenticate_request - calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI0YmMwYzlhODQ3NGJl... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded + +2025/08/19 14:32:12 [debug] 450062#450062: *11 write new buf t:1 f:0 00005CC70FEBA190, pos 00005CC70FEBA190, size: 3346 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter: l:0 f:0 s:3346 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter limit 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 writev: 3346 of 3346 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter 0000000000000000 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http cacheable: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream process upstream +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe read upstream: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe preread: 261 +2025/08/19 14:32:12 [debug] 450062#450062: *11 readv: eof:1, avail:0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 readv: 1, last:592 +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe recv chain: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe buf free s:0 t:1 f:0 00005CC70FEB8150, pos 00005CC70FEB8DFB, size: 261 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe length: -1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 input buf #0 00005CC70FEB8DFB +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 01 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 06 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 01 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record length: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi closed stdout +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 01 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 03 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 01 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 08 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record byte: 00 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi record length: 8 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http fastcgi sent end request +2025/08/19 14:32:12 [debug] 450062#450062: *11 input buf 00005CC70FEB8DFB 231 +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe write downstream: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe write downstream flush in +2025/08/19 14:32:12 [debug] 450062#450062: *11 http output filter "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http copy filter: "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http postpone filter "/upload?" 00005CC70FEC3BE0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http chunk: 231 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write new buf t:1 f:0 00005CC70FEB9FB0, pos 00005CC70FEB9FB0, size: 4 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write new buf t:1 f:0 00005CC70FEB8150, pos 00005CC70FEB8DFB, size: 231 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write new buf t:0 f:0 0000000000000000, pos 00005CC705DB02E8, size: 2 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter: l:0 f:0 s:237 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http copy filter: 0 "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 pipe write downstream done +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer: 10, old: 195125705, new: 195125707 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream exit: 0000000000000000 +2025/08/19 14:32:12 [debug] 450062#450062: *11 finalize http upstream request: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 finalize http fastcgi request +2025/08/19 14:32:12 [debug] 450062#450062: *11 free rr peer 1 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 close http upstream connection: 10 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FE96F20, unused: 48 +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer del: 10: 195125705 +2025/08/19 14:32:12 [debug] 450062#450062: *11 reusable connection: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http upstream temp fd: -1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http output filter "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http copy filter: "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http postpone filter "/upload?" 00007FFED8297450 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http chunk: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write old buf t:1 f:0 00005CC70FEB9FB0, pos 00005CC70FEB9FB0, size: 4 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write old buf t:1 f:0 00005CC70FEB8150, pos 00005CC70FEB8DFB, size: 231 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write old buf t:0 f:0 0000000000000000, pos 00005CC705DB02E8, size: 2 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 write new buf t:0 f:0 0000000000000000, pos 00005CC705DB02E5, size: 5 file: 0, size: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter: l:1 f:0 s:242 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter limit 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 writev: 242 of 242 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http write filter 0000000000000000 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http copy filter: 0 "/upload?" +2025/08/19 14:32:12 [debug] 450062#450062: *11 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 set http keepalive handler +2025/08/19 14:32:12 [debug] 450062#450062: *11 http close request +2025/08/19 14:32:12 [debug] 450062#450062: *11 http log handler +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEB8150 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FECCA20, unused: 3 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEC2D90, unused: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEB7140, unused: 7 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEB9160, unused: 42 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEBA170, unused: 718 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEB00A0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 hc free: 0000000000000000 +2025/08/19 14:32:12 [debug] 450062#450062: *11 hc busy: 0000000000000000 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 tcp_nodelay +2025/08/19 14:32:12 [debug] 450062#450062: *11 reusable connection: 1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer add: 6: 65000:195130707 +2025/08/19 14:32:12 [debug] 450062#450062: *11 post event 00005CC70FEFE760 +2025/08/19 14:32:12 [debug] 450062#450062: timer delta: 1 +2025/08/19 14:32:12 [debug] 450062#450062: posted event 00005CC70FEFE760 +2025/08/19 14:32:12 [debug] 450062#450062: *11 delete posted event 00005CC70FEFE760 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http keepalive handler +2025/08/19 14:32:12 [debug] 450062#450062: *11 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: eof:0, avail:0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEB00A0 +2025/08/19 14:32:12 [debug] 450062#450062: worker cycle +2025/08/19 14:32:12 [debug] 450062#450062: epoll timer: 65000 +2025/08/19 14:32:12 [debug] 450062#450062: epoll: fd:6 ev:2005 d:00007723057C51E1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 http keepalive handler +2025/08/19 14:32:12 [debug] 450062#450062: *11 malloc: 00005CC70FEB00A0:1024 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: eof:1, avail:-1 +2025/08/19 14:32:12 [debug] 450062#450062: *11 recv: fd:6 0 of 1024 +2025/08/19 14:32:12 [info] 450062#450062: *11 client 127.0.0.1 closed keepalive connection +2025/08/19 14:32:12 [debug] 450062#450062: *11 close http connection: 6 +2025/08/19 14:32:12 [debug] 450062#450062: *11 event timer del: 6: 195130707 +2025/08/19 14:32:12 [debug] 450062#450062: *11 reusable connection: 0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEB00A0 +2025/08/19 14:32:12 [debug] 450062#450062: *11 free: 00005CC70FEAD840, unused: 120 +2025/08/19 14:32:12 [debug] 450062#450062: timer delta: 2 +2025/08/19 14:32:12 [debug] 450062#450062: worker cycle +2025/08/19 14:32:12 [debug] 450062#450062: epoll timer: -1 +2025/08/19 14:36:53 [notice] 450061#450061: signal 15 (SIGTERM) received from 448740, exiting +2025/08/19 14:36:53 [debug] 450061#450061: wake up, sigio 0 +2025/08/19 14:36:53 [debug] 450061#450061: child: 0 450062 e:0 t:0 d:0 r:1 j:0 +2025/08/19 14:36:53 [debug] 450061#450061: termination cycle: 50 +2025/08/19 14:36:53 [debug] 450061#450061: sigsuspend +2025/08/19 14:36:53 [debug] 450062#450062: epoll: fd:7 ev:0001 d:00007723057C50F8 +2025/08/19 14:36:53 [debug] 450062#450062: channel handler +2025/08/19 14:36:53 [debug] 450062#450062: channel: 32 +2025/08/19 14:36:53 [debug] 450062#450062: channel command: 4 +2025/08/19 14:36:53 [debug] 450062#450062: channel: -2 +2025/08/19 14:36:53 [debug] 450062#450062: timer delta: 280452 +2025/08/19 14:36:53 [notice] 450062#450062: exiting +2025/08/19 14:36:53 [debug] 450062#450062: flush files +2025/08/19 14:36:53 [debug] 450062#450062: run cleanup: 00005CC70FEFBA70 +2025/08/19 14:36:53 [debug] 450062#450062: run cleanup: 00005CC70FEEEA08 +2025/08/19 14:36:53 [debug] 450062#450062: cleanup resolver +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEFCDD0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEEFBD0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FECEB40 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FECDA30 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEC7A00 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEC6940 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEC5880 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEC47C0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEBC160 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEB3130, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEBD570, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEC8A10, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FECFB50, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FED3B60, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FED7B70, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEDBB80, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEDFB90, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEE3BA0, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEE7BB0, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEEBBC0, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEF0DA0, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEF4DB0, unused: 0 +2025/08/19 14:36:53 [debug] 450062#450062: free: 00005CC70FEF8DC0, unused: 4920 +2025/08/19 14:36:53 [notice] 450062#450062: exit +2025/08/19 14:36:53 [notice] 450061#450061: signal 17 (SIGCHLD) received from 450062 +2025/08/19 14:36:53 [notice] 450061#450061: worker process 450062 exited with code 0 +2025/08/19 14:36:53 [debug] 450061#450061: shmtx forced unlock +2025/08/19 14:36:53 [debug] 450061#450061: wake up, sigio 3 +2025/08/19 14:36:53 [debug] 450061#450061: reap children +2025/08/19 14:36:53 [debug] 450061#450061: child: 0 450062 e:1 t:1 d:0 r:1 j:0 +2025/08/19 14:36:53 [notice] 450061#450061: exit +2025/08/19 14:36:53 [debug] 450061#450061: close listening 0.0.0.0:9001 #5 +2025/08/19 14:36:53 [debug] 450061#450061: run cleanup: 00005CC70FEEEA08 +2025/08/19 14:36:53 [debug] 450061#450061: cleanup resolver +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEFCDD0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEEFBD0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FECEB40 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FECDA30 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEC7A00 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEC6940 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEC5880 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEC47C0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEBC160 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEB3130, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEBD570, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEC8A10, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FECFB50, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FED3B60, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FED7B70, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEDBB80, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEDFB90, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEE3BA0, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEE7BB0, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEEBBC0, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEF0DA0, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEF4DB0, unused: 0 +2025/08/19 14:36:53 [debug] 450061#450061: free: 00005CC70FEF8DC0, unused: 4951 +2025/08/19 14:37:11 [debug] 452755#452755: bind() 0.0.0.0:9001 #5 +2025/08/19 14:37:11 [notice] 452755#452755: using the "epoll" event method +2025/08/19 14:37:11 [debug] 452755#452755: counter: 0000777B58EA6080, 1 +2025/08/19 14:37:11 [notice] 452755#452755: nginx/1.18.0 (Ubuntu) +2025/08/19 14:37:11 [notice] 452755#452755: OS: Linux 6.12.10-76061203-generic +2025/08/19 14:37:11 [notice] 452755#452755: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 14:37:11 [debug] 452756#452755: write: 6, 00007FFF46F55520, 7, 0 +2025/08/19 14:37:11 [debug] 452756#452756: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 14:37:11 [notice] 452756#452756: start worker processes +2025/08/19 14:37:11 [debug] 452756#452756: channel 6:7 +2025/08/19 14:37:11 [notice] 452756#452756: start worker process 452757 +2025/08/19 14:37:11 [debug] 452756#452756: sigsuspend +2025/08/19 14:37:11 [debug] 452757#452757: add cleanup: 000059FC17C43A70 +2025/08/19 14:37:11 [debug] 452757#452757: malloc: 000059FC17BF6BD0:8 +2025/08/19 14:37:11 [debug] 452757#452757: notify eventfd: 9 +2025/08/19 14:37:11 [debug] 452757#452757: testing the EPOLLRDHUP flag: success +2025/08/19 14:37:11 [debug] 452757#452757: malloc: 000059FC17C09580:6144 +2025/08/19 14:37:11 [debug] 452757#452757: malloc: 0000777B58C9E010:237568 +2025/08/19 14:37:11 [debug] 452757#452757: malloc: 000059FC17C466A0:98304 +2025/08/19 14:37:11 [debug] 452757#452757: malloc: 000059FC17C5E6B0:98304 +2025/08/19 14:37:11 [debug] 452757#452757: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:37:11 [debug] 452757#452757: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:37:11 [debug] 452757#452757: setproctitle: "nginx: worker process" +2025/08/19 14:37:11 [debug] 452757#452757: worker cycle +2025/08/19 14:37:11 [debug] 452757#452757: epoll timer: -1 +2025/08/19 14:37:30 [debug] 452757#452757: epoll: fd:5 ev:0001 d:0000777B58C9E010 +2025/08/19 14:37:30 [debug] 452757#452757: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:37:30 [debug] 452757#452757: posix_memalign: 000059FC17BF5840:512 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 accept: 127.0.0.1:42508 fd:6 +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer add: 6: 60000:195443958 +2025/08/19 14:37:30 [debug] 452757#452757: *1 reusable connection: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:37:30 [debug] 452757#452757: timer delta: 18906 +2025/08/19 14:37:30 [debug] 452757#452757: worker cycle +2025/08/19 14:37:30 [debug] 452757#452757: epoll timer: 60000 +2025/08/19 14:37:30 [debug] 452757#452757: epoll: fd:6 ev:0001 d:0000777B58C9E1E0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http wait request handler +2025/08/19 14:37:30 [debug] 452757#452757: *1 malloc: 000059FC17BF80A0:1024 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: eof:0, avail:-1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: fd:6 1024 of 1024 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: avail:112 +2025/08/19 14:37:30 [debug] 452757#452757: *1 reusable connection: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17C14A20:4096 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http process request line +2025/08/19 14:37:30 [debug] 452757#452757: *1 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http uri: "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http args: "" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http exten: "" +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17C0AD90:4096 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http process request header line +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "Host: localhost:9001" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "Accept: */*" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI2NWUyNjY1YWY5OThhMzk4NjIwMmY2Mzc2YjIyYWVhMzFiYjYzODdmZjM1Yzc1N2VmYTBkYjJlNWE3YjhiZTNhIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjg2NTAsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmNDQxN2M2YzU2N2M4NmFhNjBkZjJkZDVkYjllZWQ1NWZkOTlmMjZlNGFkYjU1ZmI4ZGM0MjUyYTdmMmYxMGJhIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjI1MCJdXSwiY29udGVudCI6IiIsInNpZyI6IjJjZGU1ZjVjMWE3YjY4MmYxMTAyMGY3OTAyNzI5OTEzY2Q3ZmIwODA2NTVkM2ZhMTYyMjU1M2YzZWYxN2M2YTljNDA3ZjcxYjZlNzgxMWQ3OWQ2MjAxN2JjOTRiYTM2MGQyYzM5ZWIwN2E0NWRjZjI1ZmZjODVkY2JjMTJlMGE5In0=" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "Content-Type: text/plain" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "Content-Disposition: attachment; filename="test_blob_1755628650.txt"" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header: "Content-Length: 296" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http header done +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer del: 6: 195443958 +2025/08/19 14:37:30 [debug] 452757#452757: *1 generic phase: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 rewrite phase: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 test location: "/health" +2025/08/19 14:37:30 [debug] 452757#452757: *1 test location: "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:37:30 [debug] 452757#452757: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:37:30 [debug] 452757#452757: *1 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:37:30 [debug] 452757#452757: *1 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:37:30 [debug] 452757#452757: *1 using configuration "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http cl:296 max:104857600 +2025/08/19 14:37:30 [debug] 452757#452757: *1 rewrite phase: 3 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "PUT" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script regex: "^(PUT)$" +2025/08/19 14:37:30 [notice] 452757#452757: *1 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script if +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script if: false +2025/08/19 14:37:30 [debug] 452757#452757: *1 post rewrite phase: 4 +2025/08/19 14:37:30 [debug] 452757#452757: *1 generic phase: 5 +2025/08/19 14:37:30 [debug] 452757#452757: *1 generic phase: 6 +2025/08/19 14:37:30 [debug] 452757#452757: *1 generic phase: 7 +2025/08/19 14:37:30 [debug] 452757#452757: *1 access phase: 8 +2025/08/19 14:37:30 [debug] 452757#452757: *1 access phase: 9 +2025/08/19 14:37:30 [debug] 452757#452757: *1 access phase: 10 +2025/08/19 14:37:30 [debug] 452757#452757: *1 post access phase: 11 +2025/08/19 14:37:30 [debug] 452757#452757: *1 generic phase: 12 +2025/08/19 14:37:30 [debug] 452757#452757: *1 generic phase: 13 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http client request body preread 184 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http request body content length filter +2025/08/19 14:37:30 [debug] 452757#452757: *1 http body new buf t:1 f:0 000059FC17BF83E8, pos 000059FC17BF83E8, size: 184 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http read client request body +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: eof:0, avail:112 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: fd:6 112 of 112 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: avail:0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http client request body recv 112 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http body new buf t:1 f:0 000059FC17C0B820, pos 000059FC17C0B820, size: 112 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http client request body rest 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http init upstream, client timer: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17BFF140:4096 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "QUERY_STRING" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "QUERY_STRING: " +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "REQUEST_METHOD" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "PUT" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "CONTENT_TYPE" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "text/plain" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "CONTENT_LENGTH" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "296" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SCRIPT_NAME" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "REQUEST_URI" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "DOCUMENT_URI" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "./blobs" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "HTTP/1.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "REQUEST_SCHEME" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "http" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "CGI/1.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "nginx/" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "1.18.0" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "REMOTE_ADDR" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "127.0.0.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "REMOTE_PORT" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "42508" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "REMOTE_PORT: 42508" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SERVER_ADDR" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "127.0.0.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SERVER_PORT" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "9001" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SERVER_NAME" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "localhost" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "REDIRECT_STATUS" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "200" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script var: "./blobs" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http script copy: "/ginxsom.fcgi" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI2NWUyNjY1YWY5OThhMzk4NjIwMmY2Mzc2YjIyYWVhMzFiYjYzODdmZjM1Yzc1N2VmYTBkYjJlNWE3YjhiZTNhIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjg2NTAsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmNDQxN2M2YzU2N2M4NmFhNjBkZjJkZDVkYjllZWQ1NWZkOTlmMjZlNGFkYjU1ZmI4ZGM0MjUyYTdmMmYxMGJhIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjI1MCJdXSwiY29udGVudCI6IiIsInNpZyI6IjJjZGU1ZjVjMWE3YjY4MmYxMTAyMGY3OTAyNzI5OTEzY2Q3ZmIwODA2NTVkM2ZhMTYyMjU1M2YzZWYxN2M2YTljNDA3ZjcxYjZlNzgxMWQ3OWQ2MjAxN2JjOTRiYTM2MGQyYzM5ZWIwN2E0NWRjZjI1ZmZjODVkY2JjMTJlMGE5In0=" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755628650.txt"" +2025/08/19 14:37:30 [debug] 452757#452757: *1 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http cleanup add: 000059FC17C0BB70 +2025/08/19 14:37:30 [debug] 452757#452757: *1 get rr peer, try: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 stream socket 10 +2025/08/19 14:37:30 [debug] 452757#452757: *1 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:37:30 [debug] 452757#452757: *1 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #2 +2025/08/19 14:37:30 [debug] 452757#452757: *1 connected +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream connect: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17BDEF20:128 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream send request +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream send request body +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer buf fl:0 s:1304 +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer buf fl:0 s:184 +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer buf fl:0 s:8 +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer buf fl:0 s:112 +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer buf fl:0 s:8 +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer in: 000059FC17C0BC00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 writev: 1616 of 1616 +2025/08/19 14:37:30 [debug] 452757#452757: *1 chain writer out: 0000000000000000 +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer add: 10: 60000:195443958 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http request count:2 blk:0 +2025/08/19 14:37:30 [debug] 452757#452757: timer delta: 0 +2025/08/19 14:37:30 [debug] 452757#452757: worker cycle +2025/08/19 14:37:30 [debug] 452757#452757: epoll timer: 60000 +2025/08/19 14:37:30 [debug] 452757#452757: epoll: fd:6 ev:0004 d:0000777B58C9E1E0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http run request: "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream check client, write event:1, "/upload" +2025/08/19 14:37:30 [debug] 452757#452757: epoll: fd:10 ev:0004 d:0000777B58C9E2C8 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream request: "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream dummy handler +2025/08/19 14:37:30 [debug] 452757#452757: timer delta: 3 +2025/08/19 14:37:30 [debug] 452757#452757: worker cycle +2025/08/19 14:37:30 [debug] 452757#452757: epoll timer: 59997 +2025/08/19 14:37:30 [debug] 452757#452757: epoll: fd:10 ev:2005 d:0000777B58C9E2C8 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream request: "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream process header +2025/08/19 14:37:30 [debug] 452757#452757: *1 malloc: 000059FC17C00150:4096 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: eof:1, avail:-1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: fd:10 3832 of 4096 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 01 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 06 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 01 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 0E +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: D5 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 03 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record length: 3797 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "LOG: [2025-08-19 14:37:30] PUT /upload - Auth: pending - Status: 0" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI2NWUyNjY1YWY5OThhMzk4NjIwMmY2Mzc2YjIyYWVhMzFiYjYzODdmZjM1Yzc1N2VmYTBkYjJlNWE3YjhiZTNhIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjg2NTAsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmNDQxN2M2YzU2N2M4NmFhNjBkZjJkZDVkYjllZWQ1NWZkOTlmMjZlNGFkYjU1ZmI4ZGM0MjUyYTdmMmYxMGJhIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjI1MCJdXSwiY29udGVudCI6IiIsInNpZyI6IjJjZGU1ZjVjMWE3YjY4MmYxMTAyMGY3OTAyNzI5OTEzY2Q3ZmIwODA2NTVkM2ZhMTYyMjU1M2YzZWYxN2M2YTljNDA3ZjcxYjZlNzgxMWQ3OWQ2MjAxN2JjOTRiYTM2MGQyYzM5ZWIwN2E0NWRjZjI1ZmZjODVkY2JjMTJlMGE5In0=" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "LOG: [2025-08-19 14:37:30] PUT /upload - Auth: auth_provided - Status: 0" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Successfully read DEBUG: Calculated SHA-256: f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request_with_rules called - method: upload, file_hash: f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba, mime_type: text/plain, file_size: 296" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Authorization header provided, starting basic nostr authentication" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request ENTRY - method: upload, hash: f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - calling parse_authorization_header" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI2NWUyNjY1YWY5OThh..." +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17C01160:4096 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - calling cJSON_Parse on: {"kind":24242,"id":"65e2665af998a3986202f6376b22aea31bb6387ff35c757efa0db2e5a7b8be3a","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1755628650,"tags":[["t","upload"],["x","f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba"],["expiration","1755632250"]],"content":"","sig":"2cde5f5c1a7b682f11020f7902729913cd7fb080655d3fa1622553f3ef17c6a9c407f71b6e7811d79d62017bc94ba360d2c39eb07a45dcf25ffc85dcbc12e0a9"}" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - cJSON_Parse succeeded, event parsed" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - Event fields before validation:" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: id: 65e2665af998a3986202f6376b22aea31bb6387ff35c757efa0db2e5a7b8be3a" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: sig: 2cde5f5c1a7b682f11020f7902729913cd7fb080655d3fa1622553f3ef17c6a9c407f71b6e7811d79d62017bc94ba360d2c39eb07a45dcf25ffc85dcbc12e0a9" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: kind: 24242" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: created_at: 1755628650" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - calling nostr_validate_event" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - Pre-validation pubkey analysis:" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Length: DEBUG: Character analysis (first 10): 7(55) 9(57) b(98) e(101) 6(54) 6(54) 7(55) e(101) f(102) 9(57)" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: Character validation test: ALL VALID (lowercase hex)" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - nostr_validate_event returned: -32" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - Nostr event validation FAILED: -32 (Event has invalid public key)" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "DEBUG: authenticate_request - Pubkey length: DEBUG: Basic nostr authentication failed: -32 (Event has invalid public key)" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "Status: 401 Unauthorized" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header: "Content-Type: application/json" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi parser: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi header done +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17C02170:4096 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 HTTP/1.1 401 Unauthorized +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:37:30 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 14:37:30] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI2NWUyNjY1YWY5OThhMzk4NjIwMmY2Mzc2YjIyYWVhMzFiYjYzODdmZjM1Yzc1N2VmYTBkYjJlNWE3YjhiZTNhIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2Mjg2NTAsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmNDQxN2M2YzU2N2M4NmFhNjBkZjJkZDVkYjllZWQ1NWZkOTlmMjZlNGFkYjU1ZmI4ZGM0MjUyYTdmMmYxMGJhIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjI1MCJdXSwiY29udGVudCI6IiIsInNpZyI6IjJjZGU1ZjVjMWE3YjY4MmYxMTAyMGY3OTAyNzI5OTEzY2Q3ZmIwODA2NTVkM2ZhMTYyMjU1M2YzZWYxN2M2YTljNDA3ZjcxYjZlNzgxMWQ3OWQ2MjAxN2JjOTRiYTM2MGQyYzM5ZWIwN2E0NWRjZjI1ZmZjODVkY2JjMTJlMGE5In0= +LOG: [2025-08-19 14:37:30] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG: Successfully read DEBUG: Calculated SHA-256: f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba +DEBUG: authenticate_request_with_rules called - method: upload, file_hash: f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba, mime_type: text/plain, file_size: 296 +DEBUG: Authorization header provided, starting basic nostr authentication +DEBUG: authenticate_request ENTRY - method: upload, hash: f4417c6c567c86aa60df2dd5db9eed55fd99f26e4adb55fb8dc4252a7f2f10ba +DEBUG: authenticate_request - calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiI2NWUyNjY1YWY5OThh... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded +D +2025/08/19 14:37:30 [debug] 452757#452757: *1 write new buf t:1 f:0 000059FC17C02190, pos 000059FC17C02190, size: 3670 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter: l:0 f:0 s:3670 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter limit 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 writev: 3670 of 3670 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter 0000000000000000 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http cacheable: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream process upstream +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe read upstream: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe preread: 258 +2025/08/19 14:37:30 [debug] 452757#452757: *1 readv: eof:1, avail:0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 readv: 1, last:264 +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe recv chain: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe buf free s:0 t:1 f:0 000059FC17C00150, pos 000059FC17C00F46, size: 258 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe length: -1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 input buf #0 000059FC17C00F46 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 01 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 06 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 01 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record length: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi closed stdout +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 01 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 03 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 01 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 08 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record byte: 00 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi record length: 8 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http fastcgi sent end request +2025/08/19 14:37:30 [debug] 452757#452757: *1 input buf 000059FC17C00F46 231 +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe write downstream: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe write downstream flush in +2025/08/19 14:37:30 [debug] 452757#452757: *1 http output filter "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http copy filter: "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http postpone filter "/upload?" 000059FC17C0BBE0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http chunk: 231 +2025/08/19 14:37:30 [debug] 452757#452757: *1 posix_memalign: 000059FC17C766C0:4096 @16 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write new buf t:1 f:0 000059FC17C02138, pos 000059FC17C02138, size: 4 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write new buf t:1 f:0 000059FC17C00150, pos 000059FC17C00F46, size: 231 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write new buf t:0 f:0 0000000000000000, pos 000059FC0A92D2E8, size: 2 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter: l:0 f:0 s:237 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http copy filter: 0 "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 pipe write downstream done +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer: 10, old: 195443958, new: 195443961 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream exit: 0000000000000000 +2025/08/19 14:37:30 [debug] 452757#452757: *1 finalize http upstream request: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 finalize http fastcgi request +2025/08/19 14:37:30 [debug] 452757#452757: *1 free rr peer 1 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 close http upstream connection: 10 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17BDEF20, unused: 48 +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer del: 10: 195443958 +2025/08/19 14:37:30 [debug] 452757#452757: *1 reusable connection: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http upstream temp fd: -1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http output filter "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http copy filter: "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http postpone filter "/upload?" 00007FFF46F55160 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http chunk: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write old buf t:1 f:0 000059FC17C02138, pos 000059FC17C02138, size: 4 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write old buf t:1 f:0 000059FC17C00150, pos 000059FC17C00F46, size: 231 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write old buf t:0 f:0 0000000000000000, pos 000059FC0A92D2E8, size: 2 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 write new buf t:0 f:0 0000000000000000, pos 000059FC0A92D2E5, size: 5 file: 0, size: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter: l:1 f:0 s:242 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter limit 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 writev: 242 of 242 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http write filter 0000000000000000 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http copy filter: 0 "/upload?" +2025/08/19 14:37:30 [debug] 452757#452757: *1 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 set http keepalive handler +2025/08/19 14:37:30 [debug] 452757#452757: *1 http close request +2025/08/19 14:37:30 [debug] 452757#452757: *1 http log handler +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17C00150 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17C14A20, unused: 3 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17C0AD90, unused: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17BFF140, unused: 7 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17C01160, unused: 22 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17C02170, unused: 32 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17C766C0, unused: 3698 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17BF80A0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 hc free: 0000000000000000 +2025/08/19 14:37:30 [debug] 452757#452757: *1 hc busy: 0000000000000000 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 tcp_nodelay +2025/08/19 14:37:30 [debug] 452757#452757: *1 reusable connection: 1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer add: 6: 65000:195448961 +2025/08/19 14:37:30 [debug] 452757#452757: *1 post event 000059FC17C46760 +2025/08/19 14:37:30 [debug] 452757#452757: timer delta: 0 +2025/08/19 14:37:30 [debug] 452757#452757: posted event 000059FC17C46760 +2025/08/19 14:37:30 [debug] 452757#452757: *1 delete posted event 000059FC17C46760 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http keepalive handler +2025/08/19 14:37:30 [debug] 452757#452757: *1 malloc: 000059FC17BF80A0:1024 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: eof:0, avail:0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17BF80A0 +2025/08/19 14:37:30 [debug] 452757#452757: worker cycle +2025/08/19 14:37:30 [debug] 452757#452757: epoll timer: 65000 +2025/08/19 14:37:30 [debug] 452757#452757: epoll: fd:6 ev:2005 d:0000777B58C9E1E0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 http keepalive handler +2025/08/19 14:37:30 [debug] 452757#452757: *1 malloc: 000059FC17BF80A0:1024 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: eof:1, avail:-1 +2025/08/19 14:37:30 [debug] 452757#452757: *1 recv: fd:6 0 of 1024 +2025/08/19 14:37:30 [info] 452757#452757: *1 client 127.0.0.1 closed keepalive connection +2025/08/19 14:37:30 [debug] 452757#452757: *1 close http connection: 6 +2025/08/19 14:37:30 [debug] 452757#452757: *1 event timer del: 6: 195448961 +2025/08/19 14:37:30 [debug] 452757#452757: *1 reusable connection: 0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17BF80A0 +2025/08/19 14:37:30 [debug] 452757#452757: *1 free: 000059FC17BF5840, unused: 120 +2025/08/19 14:37:30 [debug] 452757#452757: timer delta: 2 +2025/08/19 14:37:30 [debug] 452757#452757: worker cycle +2025/08/19 14:37:30 [debug] 452757#452757: epoll timer: -1 +2025/08/19 14:46:27 [notice] 452757#452757: signal 15 (SIGTERM) received from 448740, exiting +2025/08/19 14:46:27 [info] 452757#452757: epoll_wait() failed (4: Interrupted system call) +2025/08/19 14:46:27 [debug] 452757#452757: timer delta: 536699 +2025/08/19 14:46:27 [notice] 452757#452757: exiting +2025/08/19 14:46:27 [debug] 452757#452757: flush files +2025/08/19 14:46:27 [debug] 452757#452757: run cleanup: 000059FC17C43A70 +2025/08/19 14:46:27 [debug] 452757#452757: run cleanup: 000059FC17C36A08 +2025/08/19 14:46:27 [debug] 452757#452757: cleanup resolver +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C44DD0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C37BD0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C16B40 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C15A30 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C0FA00 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C0E940 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C0D880 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C0C7C0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C04160 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17BFB130, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C05570, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C10A10, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C17B50, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C1BB60, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C1FB70, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C23B80, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C27B90, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C2BBA0, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C2FBB0, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C33BC0, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C38DA0, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C3CDB0, unused: 0 +2025/08/19 14:46:27 [debug] 452757#452757: free: 000059FC17C40DC0, unused: 4920 +2025/08/19 14:46:27 [notice] 452757#452757: exit +2025/08/19 14:46:27 [notice] 452756#452756: signal 17 (SIGCHLD) received from 452757 +2025/08/19 14:46:27 [notice] 452756#452756: worker process 452757 exited with code 0 +2025/08/19 14:46:27 [debug] 452756#452756: shmtx forced unlock +2025/08/19 14:46:27 [debug] 452756#452756: wake up, sigio 0 +2025/08/19 14:46:27 [debug] 452756#452756: reap children +2025/08/19 14:46:27 [debug] 452756#452756: child: 0 452757 e:0 t:1 d:0 r:1 j:0 +2025/08/19 14:46:27 [debug] 452756#452756: channel 6:7 +2025/08/19 14:46:27 [notice] 452756#452756: start worker process 454229 +2025/08/19 14:46:27 [debug] 452756#452756: sigsuspend +2025/08/19 14:46:27 [debug] 454229#454229: add cleanup: 000059FC17C43A70 +2025/08/19 14:46:27 [debug] 454229#454229: malloc: 000059FC17BF6BD0:8 +2025/08/19 14:46:27 [debug] 454229#454229: notify eventfd: 9 +2025/08/19 14:46:27 [debug] 454229#454229: testing the EPOLLRDHUP flag: success +2025/08/19 14:46:27 [debug] 454229#454229: malloc: 000059FC17C09580:6144 +2025/08/19 14:46:27 [debug] 454229#454229: malloc: 0000777B58C9E010:237568 +2025/08/19 14:46:27 [debug] 454229#454229: malloc: 000059FC17C466A0:98304 +2025/08/19 14:46:27 [debug] 454229#454229: malloc: 000059FC17C5E6B0:98304 +2025/08/19 14:46:27 [debug] 454229#454229: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:46:27 [debug] 454229#454229: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:46:27 [debug] 454229#454229: setproctitle: "nginx: worker process" +2025/08/19 14:46:27 [debug] 454229#454229: worker cycle +2025/08/19 14:46:27 [debug] 454229#454229: epoll timer: -1 +2025/08/19 14:46:32 [notice] 454229#454229: signal 15 (SIGTERM) received from 448740, exiting +2025/08/19 14:46:32 [info] 454229#454229: epoll_wait() failed (4: Interrupted system call) +2025/08/19 14:46:32 [debug] 454229#454229: timer delta: 5214 +2025/08/19 14:46:32 [notice] 454229#454229: exiting +2025/08/19 14:46:32 [debug] 454229#454229: flush files +2025/08/19 14:46:32 [debug] 454229#454229: run cleanup: 000059FC17C43A70 +2025/08/19 14:46:32 [debug] 454229#454229: run cleanup: 000059FC17C36A08 +2025/08/19 14:46:32 [debug] 454229#454229: cleanup resolver +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C44DD0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C37BD0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C16B40 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C15A30 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C0FA00 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C0E940 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C0D880 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C0C7C0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C04160 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17BFB130, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C05570, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C10A10, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C17B50, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C1BB60, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C1FB70, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C23B80, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C27B90, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C2BBA0, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C2FBB0, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C33BC0, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C38DA0, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C3CDB0, unused: 0 +2025/08/19 14:46:32 [debug] 454229#454229: free: 000059FC17C40DC0, unused: 4920 +2025/08/19 14:46:32 [notice] 454229#454229: exit +2025/08/19 14:46:32 [notice] 452756#452756: signal 17 (SIGCHLD) received from 454229 +2025/08/19 14:46:32 [notice] 452756#452756: worker process 454229 exited with code 0 +2025/08/19 14:46:32 [debug] 452756#452756: shmtx forced unlock +2025/08/19 14:46:32 [debug] 452756#452756: wake up, sigio 0 +2025/08/19 14:46:32 [debug] 452756#452756: reap children +2025/08/19 14:46:32 [debug] 452756#452756: child: 0 454229 e:0 t:1 d:0 r:1 j:0 +2025/08/19 14:46:32 [debug] 452756#452756: channel 6:7 +2025/08/19 14:46:32 [notice] 452756#452756: start worker process 454231 +2025/08/19 14:46:32 [debug] 452756#452756: sigsuspend +2025/08/19 14:46:32 [debug] 454231#454231: add cleanup: 000059FC17C43A70 +2025/08/19 14:46:32 [debug] 454231#454231: malloc: 000059FC17BF6BD0:8 +2025/08/19 14:46:32 [debug] 454231#454231: notify eventfd: 9 +2025/08/19 14:46:32 [debug] 454231#454231: testing the EPOLLRDHUP flag: success +2025/08/19 14:46:32 [debug] 454231#454231: malloc: 000059FC17C09580:6144 +2025/08/19 14:46:32 [debug] 454231#454231: malloc: 0000777B58C9E010:237568 +2025/08/19 14:46:32 [debug] 454231#454231: malloc: 000059FC17C466A0:98304 +2025/08/19 14:46:32 [debug] 454231#454231: malloc: 000059FC17C5E6B0:98304 +2025/08/19 14:46:32 [debug] 454231#454231: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:46:32 [debug] 454231#454231: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:46:32 [debug] 454231#454231: setproctitle: "nginx: worker process" +2025/08/19 14:46:32 [debug] 454231#454231: worker cycle +2025/08/19 14:46:32 [debug] 454231#454231: epoll timer: -1 +2025/08/19 14:46:36 [notice] 452756#452756: signal 15 (SIGTERM) received from 448740, exiting +2025/08/19 14:46:36 [debug] 452756#452756: wake up, sigio 0 +2025/08/19 14:46:36 [debug] 452756#452756: child: 0 454231 e:0 t:0 d:0 r:1 j:0 +2025/08/19 14:46:36 [debug] 452756#452756: termination cycle: 50 +2025/08/19 14:46:36 [debug] 452756#452756: sigsuspend +2025/08/19 14:46:36 [debug] 454231#454231: epoll: fd:7 ev:0001 d:0000777B58C9E0F8 +2025/08/19 14:46:36 [debug] 454231#454231: channel handler +2025/08/19 14:46:36 [debug] 454231#454231: channel: 32 +2025/08/19 14:46:36 [debug] 454231#454231: channel command: 4 +2025/08/19 14:46:36 [debug] 454231#454231: channel: -2 +2025/08/19 14:46:36 [debug] 454231#454231: timer delta: 4032 +2025/08/19 14:46:36 [notice] 454231#454231: exiting +2025/08/19 14:46:36 [debug] 454231#454231: flush files +2025/08/19 14:46:36 [debug] 454231#454231: run cleanup: 000059FC17C43A70 +2025/08/19 14:46:36 [debug] 454231#454231: run cleanup: 000059FC17C36A08 +2025/08/19 14:46:36 [debug] 454231#454231: cleanup resolver +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C44DD0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C37BD0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C16B40 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C15A30 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C0FA00 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C0E940 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C0D880 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C0C7C0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C04160 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17BFB130, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C05570, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C10A10, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C17B50, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C1BB60, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C1FB70, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C23B80, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C27B90, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C2BBA0, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C2FBB0, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C33BC0, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C38DA0, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C3CDB0, unused: 0 +2025/08/19 14:46:36 [debug] 454231#454231: free: 000059FC17C40DC0, unused: 4920 +2025/08/19 14:46:36 [notice] 454231#454231: exit +2025/08/19 14:46:36 [notice] 452756#452756: signal 17 (SIGCHLD) received from 454231 +2025/08/19 14:46:36 [notice] 452756#452756: worker process 454231 exited with code 0 +2025/08/19 14:46:36 [debug] 452756#452756: shmtx forced unlock +2025/08/19 14:46:36 [debug] 452756#452756: wake up, sigio 3 +2025/08/19 14:46:36 [debug] 452756#452756: reap children +2025/08/19 14:46:36 [debug] 452756#452756: child: 0 454231 e:1 t:1 d:0 r:1 j:0 +2025/08/19 14:46:36 [notice] 452756#452756: exit +2025/08/19 14:46:36 [debug] 452756#452756: close listening 0.0.0.0:9001 #5 +2025/08/19 14:46:36 [debug] 452756#452756: run cleanup: 000059FC17C36A08 +2025/08/19 14:46:36 [debug] 452756#452756: cleanup resolver +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C44DD0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C37BD0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C16B40 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C15A30 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C0FA00 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C0E940 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C0D880 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C0C7C0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C04160 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17BFB130, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C05570, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C10A10, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C17B50, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C1BB60, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C1FB70, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C23B80, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C27B90, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C2BBA0, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C2FBB0, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C33BC0, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C38DA0, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C3CDB0, unused: 0 +2025/08/19 14:46:36 [debug] 452756#452756: free: 000059FC17C40DC0, unused: 4951 +2025/08/19 14:46:59 [debug] 454274#454274: bind() 0.0.0.0:9001 #5 +2025/08/19 14:46:59 [notice] 454274#454274: using the "epoll" event method +2025/08/19 14:46:59 [debug] 454274#454274: counter: 0000709450FB5080, 1 +2025/08/19 14:46:59 [notice] 454274#454274: nginx/1.18.0 (Ubuntu) +2025/08/19 14:46:59 [notice] 454274#454274: OS: Linux 6.12.10-76061203-generic +2025/08/19 14:46:59 [notice] 454274#454274: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/19 14:46:59 [debug] 454275#454274: write: 6, 00007FFC8B2B28E0, 7, 0 +2025/08/19 14:46:59 [debug] 454275#454275: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/19 14:46:59 [notice] 454275#454275: start worker processes +2025/08/19 14:46:59 [debug] 454275#454275: channel 6:7 +2025/08/19 14:46:59 [notice] 454275#454275: start worker process 454276 +2025/08/19 14:46:59 [debug] 454275#454275: sigsuspend +2025/08/19 14:46:59 [debug] 454276#454276: add cleanup: 0000605875C79A70 +2025/08/19 14:46:59 [debug] 454276#454276: malloc: 0000605875C2CBD0:8 +2025/08/19 14:46:59 [debug] 454276#454276: notify eventfd: 9 +2025/08/19 14:46:59 [debug] 454276#454276: testing the EPOLLRDHUP flag: success +2025/08/19 14:46:59 [debug] 454276#454276: malloc: 0000605875C3F580:6144 +2025/08/19 14:46:59 [debug] 454276#454276: malloc: 0000709450DAD010:237568 +2025/08/19 14:46:59 [debug] 454276#454276: malloc: 0000605875C7C6A0:98304 +2025/08/19 14:46:59 [debug] 454276#454276: malloc: 0000605875C946B0:98304 +2025/08/19 14:46:59 [debug] 454276#454276: epoll add event: fd:5 op:1 ev:00002001 +2025/08/19 14:46:59 [debug] 454276#454276: epoll add event: fd:7 op:1 ev:00002001 +2025/08/19 14:46:59 [debug] 454276#454276: setproctitle: "nginx: worker process" +2025/08/19 14:46:59 [debug] 454276#454276: worker cycle +2025/08/19 14:46:59 [debug] 454276#454276: epoll timer: -1 +2025/08/19 14:47:34 [debug] 454276#454276: epoll: fd:5 ev:0001 d:0000709450DAD010 +2025/08/19 14:47:34 [debug] 454276#454276: accept on 0.0.0.0:9001, ready: 0 +2025/08/19 14:47:34 [debug] 454276#454276: posix_memalign: 0000605875C2B840:512 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 accept: 127.0.0.1:36870 fd:6 +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer add: 6: 60000:196047134 +2025/08/19 14:47:34 [debug] 454276#454276: *1 reusable connection: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/08/19 14:47:34 [debug] 454276#454276: timer delta: 34551 +2025/08/19 14:47:34 [debug] 454276#454276: worker cycle +2025/08/19 14:47:34 [debug] 454276#454276: epoll timer: 60000 +2025/08/19 14:47:34 [debug] 454276#454276: epoll: fd:6 ev:0001 d:0000709450DAD1E0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http wait request handler +2025/08/19 14:47:34 [debug] 454276#454276: *1 malloc: 0000605875C2E0A0:1024 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: eof:0, avail:-1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: fd:6 1024 of 1024 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: avail:112 +2025/08/19 14:47:34 [debug] 454276#454276: *1 reusable connection: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 posix_memalign: 0000605875C4AA20:4096 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http process request line +2025/08/19 14:47:34 [debug] 454276#454276: *1 http request line: "PUT /upload HTTP/1.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http uri: "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http args: "" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http exten: "" +2025/08/19 14:47:34 [debug] 454276#454276: *1 posix_memalign: 0000605875C40D90:4096 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http process request header line +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "Host: localhost:9001" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "User-Agent: curl/8.15.0" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "Accept: */*" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxOTViZjNkOGY5ZjhjNTgzYWM2YWIzYTk3YzBhNjE4YzlkM2QyODY4ZWM4MzU0NDFkNzM5NTBlYzQ5ZjAzMjVlIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjkyNTMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZTcxOGI3MjI5NWVlYmMwZDlkYzZlM2Y5MTQzYjY5MDA4YjE3MDZmMjI0YzczZTk4YzNkZDFmMmVmNDQ5NDExIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjg1MyJdXSwiY29udGVudCI6IiIsInNpZyI6IjY0M2ViNzMxMjIxZjMxNmY1NGU2OWM2NjkzOThmMDg4YzQwNTBkZmNlNDMwZGJjODJkNWRhNDUxZDVkMDkyNTgzNTQ2MzkyMmE0N2M2ZmRmOWQ3NjllY2I4YzAwNWQ0YjE1NGUyMWQwOTNkZDE4Y2Q1YTk4M2YyY2MxOThiMWIxIn0=" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "Content-Type: text/plain" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "Content-Disposition: attachment; filename="test_blob_1755629253.txt"" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header: "Content-Length: 296" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http header done +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer del: 6: 196047134 +2025/08/19 14:47:34 [debug] 454276#454276: *1 generic phase: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 rewrite phase: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 test location: "/health" +2025/08/19 14:47:34 [debug] 454276#454276: *1 test location: "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/08/19 14:47:34 [debug] 454276#454276: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/08/19 14:47:34 [debug] 454276#454276: *1 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/08/19 14:47:34 [debug] 454276#454276: *1 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/08/19 14:47:34 [debug] 454276#454276: *1 using configuration "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http cl:296 max:104857600 +2025/08/19 14:47:34 [debug] 454276#454276: *1 rewrite phase: 3 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "PUT" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script regex: "^(PUT)$" +2025/08/19 14:47:34 [notice] 454276#454276: *1 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script if +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script if: false +2025/08/19 14:47:34 [debug] 454276#454276: *1 post rewrite phase: 4 +2025/08/19 14:47:34 [debug] 454276#454276: *1 generic phase: 5 +2025/08/19 14:47:34 [debug] 454276#454276: *1 generic phase: 6 +2025/08/19 14:47:34 [debug] 454276#454276: *1 generic phase: 7 +2025/08/19 14:47:34 [debug] 454276#454276: *1 access phase: 8 +2025/08/19 14:47:34 [debug] 454276#454276: *1 access phase: 9 +2025/08/19 14:47:34 [debug] 454276#454276: *1 access phase: 10 +2025/08/19 14:47:34 [debug] 454276#454276: *1 post access phase: 11 +2025/08/19 14:47:34 [debug] 454276#454276: *1 generic phase: 12 +2025/08/19 14:47:34 [debug] 454276#454276: *1 generic phase: 13 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http client request body preread 184 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http request body content length filter +2025/08/19 14:47:34 [debug] 454276#454276: *1 http body new buf t:1 f:0 0000605875C2E3E8, pos 0000605875C2E3E8, size: 184 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http read client request body +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: eof:0, avail:112 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: fd:6 112 of 112 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: avail:0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http client request body recv 112 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http body new buf t:1 f:0 0000605875C41820, pos 0000605875C41820, size: 112 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http client request body rest 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http init upstream, client timer: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 epoll add event: fd:6 op:3 ev:80002005 +2025/08/19 14:47:34 [debug] 454276#454276: *1 posix_memalign: 0000605875C35140:4096 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "QUERY_STRING" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "QUERY_STRING: " +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "REQUEST_METHOD" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "PUT" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "REQUEST_METHOD: PUT" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "CONTENT_TYPE" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "text/plain" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "CONTENT_TYPE: text/plain" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "CONTENT_LENGTH" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "296" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "CONTENT_LENGTH: 296" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SCRIPT_NAME" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SCRIPT_NAME: /upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "REQUEST_URI" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "REQUEST_URI: /upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "DOCUMENT_URI" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "DOCUMENT_URI: /upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "DOCUMENT_ROOT" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "./blobs" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SERVER_PROTOCOL" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "HTTP/1.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "REQUEST_SCHEME" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "http" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "REQUEST_SCHEME: http" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "GATEWAY_INTERFACE" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "CGI/1.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SERVER_SOFTWARE" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "nginx/" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "1.18.0" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "REMOTE_ADDR" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "127.0.0.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "REMOTE_PORT" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "36870" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "REMOTE_PORT: 36870" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SERVER_ADDR" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "127.0.0.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SERVER_PORT" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "9001" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SERVER_PORT: 9001" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SERVER_NAME" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "localhost" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SERVER_NAME: localhost" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "REDIRECT_STATUS" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "200" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "REDIRECT_STATUS: 200" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "SCRIPT_FILENAME" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script var: "./blobs" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http script copy: "/ginxsom.fcgi" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_HOST: localhost:9001" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_ACCEPT: */*" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxOTViZjNkOGY5ZjhjNTgzYWM2YWIzYTk3YzBhNjE4YzlkM2QyODY4ZWM4MzU0NDFkNzM5NTBlYzQ5ZjAzMjVlIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjkyNTMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZTcxOGI3MjI5NWVlYmMwZDlkYzZlM2Y5MTQzYjY5MDA4YjE3MDZmMjI0YzczZTk4YzNkZDFmMmVmNDQ5NDExIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjg1MyJdXSwiY29udGVudCI6IiIsInNpZyI6IjY0M2ViNzMxMjIxZjMxNmY1NGU2OWM2NjkzOThmMDg4YzQwNTBkZmNlNDMwZGJjODJkNWRhNDUxZDVkMDkyNTgzNTQ2MzkyMmE0N2M2ZmRmOWQ3NjllY2I4YzAwNWQ0YjE1NGUyMWQwOTNkZDE4Y2Q1YTk4M2YyY2MxOThiMWIxIn0=" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1755629253.txt"" +2025/08/19 14:47:34 [debug] 454276#454276: *1 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http cleanup add: 0000605875C41B70 +2025/08/19 14:47:34 [debug] 454276#454276: *1 get rr peer, try: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 stream socket 10 +2025/08/19 14:47:34 [debug] 454276#454276: *1 epoll add connection: fd:10 ev:80002005 +2025/08/19 14:47:34 [debug] 454276#454276: *1 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #2 +2025/08/19 14:47:34 [debug] 454276#454276: *1 connected +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream connect: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 posix_memalign: 0000605875C14F20:128 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream send request +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream send request body +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer buf fl:0 s:1304 +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer buf fl:0 s:184 +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer buf fl:0 s:8 +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer buf fl:0 s:112 +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer buf fl:0 s:8 +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer in: 0000605875C41C00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 writev: 1616 of 1616 +2025/08/19 14:47:34 [debug] 454276#454276: *1 chain writer out: 0000000000000000 +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer add: 10: 60000:196047134 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http finalize request: -4, "/upload?" a:1, c:2 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http request count:2 blk:0 +2025/08/19 14:47:34 [debug] 454276#454276: timer delta: 0 +2025/08/19 14:47:34 [debug] 454276#454276: worker cycle +2025/08/19 14:47:34 [debug] 454276#454276: epoll timer: 60000 +2025/08/19 14:47:34 [debug] 454276#454276: epoll: fd:6 ev:0004 d:0000709450DAD1E0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http run request: "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream check client, write event:1, "/upload" +2025/08/19 14:47:34 [debug] 454276#454276: epoll: fd:10 ev:0004 d:0000709450DAD2C8 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream request: "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream dummy handler +2025/08/19 14:47:34 [debug] 454276#454276: timer delta: 2 +2025/08/19 14:47:34 [debug] 454276#454276: worker cycle +2025/08/19 14:47:34 [debug] 454276#454276: epoll timer: 59998 +2025/08/19 14:47:34 [debug] 454276#454276: epoll: fd:10 ev:2005 d:0000709450DAD2C8 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream request: "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream process header +2025/08/19 14:47:34 [debug] 454276#454276: *1 malloc: 0000605875C36150:4096 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: eof:1, avail:-1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: fd:10 3480 of 4096 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 01 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 06 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 01 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 0D +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 76 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 02 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record length: 3446 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: FastCGI received request" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: METHOD=PUT, URI=/upload" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: handle_upload_request called" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "LOG: [2025-08-19 14:47:34] PUT /upload - Auth: pending - Status: 0" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: content_type=text/plain" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: content_length=296" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxOTViZjNkOGY5ZjhjNTgzYWM2YWIzYTk3YzBhNjE4YzlkM2QyODY4ZWM4MzU0NDFkNzM5NTBlYzQ5ZjAzMjVlIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjkyNTMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZTcxOGI3MjI5NWVlYmMwZDlkYzZlM2Y5MTQzYjY5MDA4YjE3MDZmMjI0YzczZTk4YzNkZDFmMmVmNDQ5NDExIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjg1MyJdXSwiY29udGVudCI6IiIsInNpZyI6IjY0M2ViNzMxMjIxZjMxNmY1NGU2OWM2NjkzOThmMDg4YzQwNTBkZmNlNDMwZGJjODJkNWRhNDUxZDVkMDkyNTgzNTQ2MzkyMmE0N2M2ZmRmOWQ3NjllY2I4YzAwNWQ0YjE1NGUyMWQwOTNkZDE4Y2Q1YTk4M2YyY2MxOThiMWIxIn0=" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "LOG: [2025-08-19 14:47:34] PUT /upload - Auth: auth_provided - Status: 0" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: Successfully read DEBUG: Calculated SHA-256: fe718b72295eebc0d9dc6e3f9143b69008b1706f224c73e98c3dd1f2ef449411" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request ENTRY - method: upload, hash: fe718b72295eebc0d9dc6e3f9143b69008b1706f224c73e98c3dd1f2ef449411" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - calling parse_authorization_header" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxOTViZjNkOGY5Zjhj..." +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - calling cJSON_Parse on: {"kind":24242,"id":"195bf3d8f9f8c583ac6ab3a97c0a618c9d3d2868ec835441d73950ec49f0325e","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1755629253,"tags":[["t","upload"],["x","fe718b72295eebc0d9dc6e3f9143b69008b1706f224c73e98c3dd1f2ef449411"],["expiration","1755632853"]],"content":"","sig":"643eb731221f316f54e69c669398f088c4050dfce430dbc82d5da451d5d0925835463922a47c6fdf9d769ecb8c005d4b154e21d093dd18cd5a983f2cc198b1b1"}" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 posix_memalign: 0000605875C37160:4096 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - cJSON_Parse succeeded, event parsed" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - Event fields before validation:" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: id: 195bf3d8f9f8c583ac6ab3a97c0a618c9d3d2868ec835441d73950ec49f0325e" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: sig: 643eb731221f316f54e69c669398f088c4050dfce430dbc82d5da451d5d0925835463922a47c6fdf9d769ecb8c005d4b154e21d093dd18cd5a983f2cc198b1b1" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: kind: 24242" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: created_at: 1755629253" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - calling nostr_validate_event" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - Pre-validation pubkey analysis:" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: Length: DEBUG: Character analysis (first 10): 7(55) 9(57) b(98) e(101) 6(54) 6(54) 7(55) e(101) f(102) 9(57)" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: Character validation test: ALL VALID (lowercase hex)" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - nostr_validate_event returned: -32" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - Nostr event validation FAILED: -32 (Event has invalid public key)" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "DEBUG: authenticate_request - Pubkey length: Status: 401 Unauthorized" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header: "Content-Type: application/json" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi parser: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi header done +2025/08/19 14:47:34 [debug] 454276#454276: *1 posix_memalign: 0000605875C38170:4096 @16 +2025/08/19 14:47:34 [debug] 454276#454276: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 19 Aug 2025 18:47:34 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +DEBUG: FastCGI received request +DEBUG: METHOD=PUT, URI=/upload +DEBUG: handle_upload_request called +LOG: [2025-08-19 14:47:34] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxOTViZjNkOGY5ZjhjNTgzYWM2YWIzYTk3YzBhNjE4YzlkM2QyODY4ZWM4MzU0NDFkNzM5NTBlYzQ5ZjAzMjVlIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTU2MjkyNTMsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJmZTcxOGI3MjI5NWVlYmMwZDlkYzZlM2Y5MTQzYjY5MDA4YjE3MDZmMjI0YzczZTk4YzNkZDFmMmVmNDQ5NDExIl0sWyJleHBpcmF0aW9uIiwiMTc1NTYzMjg1MyJdXSwiY29udGVudCI6IiIsInNpZyI6IjY0M2ViNzMxMjIxZjMxNmY1NGU2OWM2NjkzOThmMDg4YzQwNTBkZmNlNDMwZGJjODJkNWRhNDUxZDVkMDkyNTgzNTQ2MzkyMmE0N2M2ZmRmOWQ3NjllY2I4YzAwNWQ0YjE1NGUyMWQwOTNkZDE4Y2Q1YTk4M2YyY2MxOThiMWIxIn0= +LOG: [2025-08-19 14:47:34] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG: Successfully read DEBUG: Calculated SHA-256: fe718b72295eebc0d9dc6e3f9143b69008b1706f224c73e98c3dd1f2ef449411 +DEBUG: authenticate_request ENTRY - method: upload, hash: fe718b72295eebc0d9dc6e3f9143b69008b1706f224c73e98c3dd1f2ef449411 +DEBUG: authenticate_request - calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiIxOTViZjNkOGY5Zjhj... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: authenticate_request - parse_authorization_header succeeded +DEBUG: authenticate_request - calling cJSON_Parse on: {"kind":24242,"id":"195bf3d8f9f8c583ac6ab3a97c0a618c9d3d2868ec835441d73950ec49f0325e","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1755629253,"tags":[["t","upload"],["x +2025/08/19 14:47:34 [debug] 454276#454276: *1 write new buf t:1 f:0 0000605875C38190, pos 0000605875C38190, size: 3442 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter: l:0 f:0 s:3442 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter limit 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 writev: 3442 of 3442 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter 0000000000000000 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http cacheable: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream process upstream +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe read upstream: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe preread: 239 +2025/08/19 14:47:34 [debug] 454276#454276: *1 readv: eof:1, avail:0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 readv: 1, last:616 +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe recv chain: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe buf free s:0 t:1 f:0 0000605875C36150, pos 0000605875C36DF9, size: 239 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe length: -1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 input buf #0 0000605875C36DF9 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 01 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 06 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 01 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record length: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi closed stdout +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 01 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 03 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 01 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 08 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record byte: 00 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi record length: 8 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http fastcgi sent end request +2025/08/19 14:47:34 [debug] 454276#454276: *1 input buf 0000605875C36DF9 213 +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe write downstream: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe write downstream flush in +2025/08/19 14:47:34 [debug] 454276#454276: *1 http output filter "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http copy filter: "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http postpone filter "/upload?" 0000605875C41BE0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http chunk: 213 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write new buf t:1 f:0 0000605875C37FA0, pos 0000605875C37FA0, size: 4 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write new buf t:1 f:0 0000605875C36150, pos 0000605875C36DF9, size: 213 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write new buf t:0 f:0 0000000000000000, pos 00006058374F52E8, size: 2 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter: l:0 f:0 s:219 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http copy filter: 0 "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 pipe write downstream done +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer: 10, old: 196047134, new: 196047136 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream exit: 0000000000000000 +2025/08/19 14:47:34 [debug] 454276#454276: *1 finalize http upstream request: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 finalize http fastcgi request +2025/08/19 14:47:34 [debug] 454276#454276: *1 free rr peer 1 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 close http upstream connection: 10 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C14F20, unused: 48 +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer del: 10: 196047134 +2025/08/19 14:47:34 [debug] 454276#454276: *1 reusable connection: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http upstream temp fd: -1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http output filter "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http copy filter: "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http postpone filter "/upload?" 00007FFC8B2B2520 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http chunk: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write old buf t:1 f:0 0000605875C37FA0, pos 0000605875C37FA0, size: 4 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write old buf t:1 f:0 0000605875C36150, pos 0000605875C36DF9, size: 213 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write old buf t:0 f:0 0000000000000000, pos 00006058374F52E8, size: 2 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 write new buf t:0 f:0 0000000000000000, pos 00006058374F52E5, size: 5 file: 0, size: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter: l:1 f:0 s:224 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter limit 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 writev: 224 of 224 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http write filter 0000000000000000 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http copy filter: 0 "/upload?" +2025/08/19 14:47:34 [debug] 454276#454276: *1 http finalize request: 0, "/upload?" a:1, c:1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 set http keepalive handler +2025/08/19 14:47:34 [debug] 454276#454276: *1 http close request +2025/08/19 14:47:34 [debug] 454276#454276: *1 http log handler +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C36150 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C4AA20, unused: 3 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C40D90, unused: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C35140, unused: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C37160, unused: 58 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C38170, unused: 622 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C2E0A0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 hc free: 0000000000000000 +2025/08/19 14:47:34 [debug] 454276#454276: *1 hc busy: 0000000000000000 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 tcp_nodelay +2025/08/19 14:47:34 [debug] 454276#454276: *1 reusable connection: 1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer add: 6: 65000:196052136 +2025/08/19 14:47:34 [debug] 454276#454276: *1 post event 0000605875C7C760 +2025/08/19 14:47:34 [debug] 454276#454276: timer delta: 0 +2025/08/19 14:47:34 [debug] 454276#454276: posted event 0000605875C7C760 +2025/08/19 14:47:34 [debug] 454276#454276: *1 delete posted event 0000605875C7C760 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http keepalive handler +2025/08/19 14:47:34 [debug] 454276#454276: *1 malloc: 0000605875C2E0A0:1024 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: eof:0, avail:0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C2E0A0 +2025/08/19 14:47:34 [debug] 454276#454276: worker cycle +2025/08/19 14:47:34 [debug] 454276#454276: epoll timer: 65000 +2025/08/19 14:47:34 [debug] 454276#454276: epoll: fd:6 ev:2005 d:0000709450DAD1E0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 http keepalive handler +2025/08/19 14:47:34 [debug] 454276#454276: *1 malloc: 0000605875C2E0A0:1024 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: eof:1, avail:-1 +2025/08/19 14:47:34 [debug] 454276#454276: *1 recv: fd:6 0 of 1024 +2025/08/19 14:47:34 [info] 454276#454276: *1 client 127.0.0.1 closed keepalive connection +2025/08/19 14:47:34 [debug] 454276#454276: *1 close http connection: 6 +2025/08/19 14:47:34 [debug] 454276#454276: *1 event timer del: 6: 196052136 +2025/08/19 14:47:34 [debug] 454276#454276: *1 reusable connection: 0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C2E0A0 +2025/08/19 14:47:34 [debug] 454276#454276: *1 free: 0000605875C2B840, unused: 120 +2025/08/19 14:47:34 [debug] 454276#454276: timer delta: 2 +2025/08/19 14:47:34 [debug] 454276#454276: worker cycle +2025/08/19 14:47:34 [debug] 454276#454276: epoll timer: -1 +2025/08/20 06:17:05 [notice] 454275#454275: signal 15 (SIGTERM) received from 596540, exiting +2025/08/20 06:17:05 [debug] 454275#454275: wake up, sigio 0 +2025/08/20 06:17:05 [debug] 454275#454275: child: 0 454276 e:0 t:0 d:0 r:1 j:0 +2025/08/20 06:17:05 [debug] 454275#454275: termination cycle: 50 +2025/08/20 06:17:05 [debug] 454275#454275: sigsuspend +2025/08/20 06:17:05 [debug] 454276#454276: epoll: fd:7 ev:0001 d:0000709450DAD0F8 +2025/08/20 06:17:05 [debug] 454276#454276: channel handler +2025/08/20 06:17:05 [debug] 454276#454276: channel: 32 +2025/08/20 06:17:05 [debug] 454276#454276: channel command: 4 +2025/08/20 06:17:05 [debug] 454276#454276: channel: -2 +2025/08/20 06:17:05 [debug] 454276#454276: timer delta: 55771260 +2025/08/20 06:17:05 [notice] 454276#454276: exiting +2025/08/20 06:17:05 [debug] 454276#454276: flush files +2025/08/20 06:17:05 [debug] 454276#454276: run cleanup: 0000605875C79A70 +2025/08/20 06:17:05 [debug] 454276#454276: run cleanup: 0000605875C6CA08 +2025/08/20 06:17:05 [debug] 454276#454276: cleanup resolver +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C7ADD0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C6DBD0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C4CB40 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C4BA30 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C45A00 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C44940 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C43880 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C427C0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C3A160 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C31130, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C3B570, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C46A10, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C4DB50, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C51B60, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C55B70, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C59B80, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C5DB90, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C61BA0, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C65BB0, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C69BC0, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C6EDA0, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C72DB0, unused: 0 +2025/08/20 06:17:05 [debug] 454276#454276: free: 0000605875C76DC0, unused: 4920 +2025/08/20 06:17:05 [notice] 454276#454276: exit +2025/08/20 06:17:05 [notice] 454275#454275: signal 17 (SIGCHLD) received from 454276 +2025/08/20 06:17:05 [notice] 454275#454275: worker process 454276 exited with code 0 +2025/08/20 06:17:05 [debug] 454275#454275: shmtx forced unlock +2025/08/20 06:17:05 [debug] 454275#454275: wake up, sigio 3 +2025/08/20 06:17:05 [debug] 454275#454275: reap children +2025/08/20 06:17:05 [debug] 454275#454275: child: 0 454276 e:1 t:1 d:0 r:1 j:0 +2025/08/20 06:17:05 [notice] 454275#454275: exit +2025/08/20 06:17:05 [debug] 454275#454275: close listening 0.0.0.0:9001 #5 +2025/08/20 06:17:05 [debug] 454275#454275: run cleanup: 0000605875C6CA08 +2025/08/20 06:17:05 [debug] 454275#454275: cleanup resolver +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C7ADD0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C6DBD0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C4CB40 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C4BA30 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C45A00 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C44940 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C43880 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C427C0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C3A160 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C31130, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C3B570, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C46A10, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C4DB50, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C51B60, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C55B70, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C59B80, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C5DB90, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C61BA0, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C65BB0, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C69BC0, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C6EDA0, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C72DB0, unused: 0 +2025/08/20 06:17:05 [debug] 454275#454275: free: 0000605875C76DC0, unused: 4951 +2025/08/20 06:17:08 [debug] 596582#596582: bind() 0.0.0.0:9001 #5 +2025/08/20 06:17:08 [debug] 596582#596582: counter: 000076E753418080, 1 +2025/08/20 06:17:08 [debug] 596583#596583: bind() 0.0.0.0:9001 #5 +2025/08/20 06:17:08 [notice] 596583#596583: using the "epoll" event method +2025/08/20 06:17:08 [debug] 596583#596583: counter: 00007B8241970080, 1 +2025/08/20 06:17:08 [notice] 596583#596583: nginx/1.18.0 (Ubuntu) +2025/08/20 06:17:08 [notice] 596583#596583: OS: Linux 6.12.10-76061203-generic +2025/08/20 06:17:08 [notice] 596583#596583: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/08/20 06:17:08 [debug] 596584#596583: write: 6, 00007FFC50BA1760, 7, 0 +2025/08/20 06:17:08 [debug] 596584#596584: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/08/20 06:17:08 [notice] 596584#596584: start worker processes +2025/08/20 06:17:08 [debug] 596584#596584: channel 6:7 +2025/08/20 06:17:08 [notice] 596584#596584: start worker process 596585 +2025/08/20 06:17:08 [debug] 596584#596584: sigsuspend +2025/08/20 06:17:08 [debug] 596585#596585: add cleanup: 000063BBFB3FAA80 +2025/08/20 06:17:08 [debug] 596585#596585: malloc: 000063BBFB3ADBD0:8 +2025/08/20 06:17:08 [debug] 596585#596585: notify eventfd: 9 +2025/08/20 06:17:08 [debug] 596585#596585: testing the EPOLLRDHUP flag: success +2025/08/20 06:17:08 [debug] 596585#596585: malloc: 000063BBFB3C0590:6144 +2025/08/20 06:17:08 [debug] 596585#596585: malloc: 00007B8241768010:237568 +2025/08/20 06:17:08 [debug] 596585#596585: malloc: 000063BBFB3FD6B0:98304 +2025/08/20 06:17:08 [debug] 596585#596585: malloc: 000063BBFB4156C0:98304 +2025/08/20 06:17:08 [debug] 596585#596585: epoll add event: fd:5 op:1 ev:00002001 +2025/08/20 06:17:08 [debug] 596585#596585: epoll add event: fd:7 op:1 ev:00002001 +2025/08/20 06:17:08 [debug] 596585#596585: setproctitle: "nginx: worker process" +2025/08/20 06:17:08 [debug] 596585#596585: worker cycle +2025/08/20 06:17:08 [debug] 596585#596585: epoll timer: -1 diff --git a/logs/nginx.pid b/logs/nginx.pid index ae00c19..9dc9bcf 100644 --- a/logs/nginx.pid +++ b/logs/nginx.pid @@ -1 +1 @@ -390406 +596584 diff --git a/restart-all.sh b/restart-all.sh new file mode 100755 index 0000000..56d1791 --- /dev/null +++ b/restart-all.sh @@ -0,0 +1,229 @@ +#!/bin/bash +# Restart Ginxsom Development Environment +# Combines nginx and FastCGI restart operations for debugging + +# Configuration +FCGI_BINARY="./build/ginxsom-fcgi" +SOCKET_PATH="/tmp/ginxsom-fcgi.sock" +PID_FILE="/tmp/ginxsom-fcgi.pid" +NGINX_CONFIG="config/local-nginx.conf" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${YELLOW}=== Ginxsom Development Environment Restart ===${NC}" +echo "Starting full restart sequence..." + +# Function to check if a process is running +check_process() { + local pid=$1 + kill -0 "$pid" 2>/dev/null +} + +# Function to wait for process to stop +wait_for_stop() { + local pid=$1 + local timeout=${2:-10} + local count=0 + + while check_process "$pid" && [ $count -lt $timeout ]; do + sleep 1 + ((count++)) + done + + if check_process "$pid"; then + echo -e "${RED}Warning: Process $pid still running after ${timeout}s${NC}" + return 1 + fi + return 0 +} + +# Step 1: Stop nginx +echo -e "\n${YELLOW}1. Stopping nginx...${NC}" +if pgrep -f "nginx.*${NGINX_CONFIG}" > /dev/null; then + echo "Found running nginx processes, stopping..." + nginx -p . -c "${NGINX_CONFIG}" -s stop 2>/dev/null + sleep 2 + + # Force kill any remaining nginx processes + NGINX_PIDS=$(pgrep -f "nginx.*${NGINX_CONFIG}") + if [ ! -z "$NGINX_PIDS" ]; then + echo "Force killing remaining nginx processes: $NGINX_PIDS" + kill -9 $NGINX_PIDS 2>/dev/null + fi + echo -e "${GREEN}nginx stopped${NC}" +else + echo "nginx not running" +fi + +# Step 2: Stop FastCGI +echo -e "\n${YELLOW}2. Stopping FastCGI application...${NC}" + +# Method 1: Stop via PID file +if [ -f "$PID_FILE" ]; then + PID=$(cat "$PID_FILE") + echo "Found PID file with process $PID" + if check_process "$PID"; then + echo "Stopping FastCGI process $PID" + kill "$PID" + if wait_for_stop "$PID" 5; then + echo -e "${GREEN}FastCGI process stopped gracefully${NC}" + else + echo "Force killing FastCGI process $PID" + kill -9 "$PID" 2>/dev/null + fi + else + echo "PID $PID not running, cleaning up PID file" + fi + rm -f "$PID_FILE" +fi + +# Method 2: Kill any remaining ginxsom-fcgi processes +FCGI_PIDS=$(pgrep -f "ginxsom-fcgi") +if [ ! -z "$FCGI_PIDS" ]; then + echo "Found additional FastCGI processes: $FCGI_PIDS" + kill $FCGI_PIDS 2>/dev/null + sleep 2 + # Force kill if still running + FCGI_PIDS=$(pgrep -f "ginxsom-fcgi") + if [ ! -z "$FCGI_PIDS" ]; then + echo "Force killing FastCGI processes: $FCGI_PIDS" + kill -9 $FCGI_PIDS 2>/dev/null + fi +fi + +# Method 3: Clean up socket +if [ -S "$SOCKET_PATH" ]; then + echo "Removing old socket: $SOCKET_PATH" + rm -f "$SOCKET_PATH" +fi + +echo -e "${GREEN}FastCGI cleanup complete${NC}" + +# Step 3: Check if binary exists and is up to date +echo -e "\n${YELLOW}3. Checking FastCGI binary...${NC}" +if [ ! -f "$FCGI_BINARY" ]; then + echo -e "${RED}Error: FastCGI binary not found at $FCGI_BINARY${NC}" + echo "Building application..." + make + if [ $? -ne 0 ]; then + echo -e "${RED}Build failed! Cannot continue.${NC}" + exit 1 + fi +else + echo "FastCGI binary found: $FCGI_BINARY" + + # Check if source is newer than binary + if [ "src/main.c" -nt "$FCGI_BINARY" ] || [ "Makefile" -nt "$FCGI_BINARY" ]; then + echo "Source files are newer than binary, rebuilding..." + make + if [ $? -ne 0 ]; then + echo -e "${RED}Build failed! Cannot continue.${NC}" + exit 1 + fi + echo -e "${GREEN}Rebuild complete${NC}" + fi +fi + +# Step 4: Start FastCGI +echo -e "\n${YELLOW}4. Starting FastCGI application...${NC}" +echo "Socket: $SOCKET_PATH" +echo "Binary: $FCGI_BINARY" + +# Check if spawn-fcgi is available +if ! command -v spawn-fcgi &> /dev/null; then + echo -e "${RED}Error: spawn-fcgi not found. Please install it:${NC}" + echo " Ubuntu/Debian: sudo apt-get install spawn-fcgi" + echo " macOS: brew install spawn-fcgi" + exit 1 +fi + +# Start FastCGI application +spawn-fcgi -s "$SOCKET_PATH" -M 666 -u "$USER" -g "$USER" -f "$FCGI_BINARY" -P "$PID_FILE" + +if [ $? -eq 0 ] && [ -f "$PID_FILE" ]; then + PID=$(cat "$PID_FILE") + echo -e "${GREEN}FastCGI application started successfully${NC}" + echo "PID: $PID" + + # Verify it's actually running + if check_process "$PID"; then + echo -e "${GREEN}Process confirmed running${NC}" + else + echo -e "${RED}Warning: Process may have crashed immediately${NC}" + exit 1 + fi +else + echo -e "${RED}Failed to start FastCGI application${NC}" + exit 1 +fi + +# Step 5: Start nginx +echo -e "\n${YELLOW}5. Starting nginx...${NC}" +if [ ! -f "$NGINX_CONFIG" ]; then + echo -e "${RED}Error: nginx config not found at $NGINX_CONFIG${NC}" + exit 1 +fi + +# Test nginx configuration first +nginx -p . -c "$NGINX_CONFIG" -t +if [ $? -ne 0 ]; then + echo -e "${RED}nginx configuration test failed!${NC}" + exit 1 +fi + +# Start nginx +nginx -p . -c "$NGINX_CONFIG" +if [ $? -eq 0 ]; then + echo -e "${GREEN}nginx started successfully${NC}" + + # Verify nginx is running + sleep 1 + if pgrep -f "nginx.*${NGINX_CONFIG}" > /dev/null; then + echo -e "${GREEN}nginx confirmed running${NC}" + else + echo -e "${RED}Warning: nginx may have crashed${NC}" + exit 1 + fi +else + echo -e "${RED}Failed to start nginx${NC}" + exit 1 +fi + +# Step 6: Final status check +echo -e "\n${YELLOW}6. Final status check...${NC}" + +# Check FastCGI +if [ -f "$PID_FILE" ]; then + PID=$(cat "$PID_FILE") + if check_process "$PID"; then + echo -e "${GREEN}✓ FastCGI running (PID: $PID)${NC}" + else + echo -e "${RED}✗ FastCGI not running${NC}" + fi +else + echo -e "${RED}✗ FastCGI PID file missing${NC}" +fi + +# Check nginx +if pgrep -f "nginx.*${NGINX_CONFIG}" > /dev/null; then + NGINX_PIDS=$(pgrep -f "nginx.*${NGINX_CONFIG}" | tr '\n' ' ') + echo -e "${GREEN}✓ nginx running (PIDs: $NGINX_PIDS)${NC}" +else + echo -e "${RED}✗ nginx not running${NC}" +fi + +# Check socket +if [ -S "$SOCKET_PATH" ]; then + echo -e "${GREEN}✓ FastCGI socket exists: $SOCKET_PATH${NC}" +else + echo -e "${RED}✗ FastCGI socket missing: $SOCKET_PATH${NC}" +fi + +echo -e "\n${GREEN}=== Restart sequence complete ===${NC}" +echo -e "${YELLOW}Server should be available at: http://localhost:9001${NC}" +echo -e "${YELLOW}To stop all processes, run: nginx -p . -c $NGINX_CONFIG -s stop && kill \$(cat $PID_FILE 2>/dev/null)${NC}" +echo -e "${YELLOW}To monitor logs, check: logs/error.log and logs/access.log${NC}" \ No newline at end of file diff --git a/src/main.c b/src/main.c index ee6d3b7..0ee416b 100644 --- a/src/main.c +++ b/src/main.c @@ -328,33 +328,39 @@ const char* extract_sha256_from_uri(const char* uri) { // Parse Authorization header and extract JSON event int parse_authorization_header(const char* auth_header, char* event_json, size_t json_size) { if (!auth_header || !event_json) { + printf("DEBUG: parse_authorization_header - invalid parameters: auth_header=%p, event_json=%p\r\n", + (void*)auth_header, (void*)event_json); return NOSTR_ERROR_INVALID_INPUT; } + printf("DEBUG: parse_authorization_header called with header: %.50s...\r\n", auth_header); + // Check for "Nostr " prefix (case-insensitive) const char* prefix = "nostr "; size_t prefix_len = strlen(prefix); if (strncasecmp(auth_header, prefix, prefix_len) != 0) { - printf("DEBUG: Authorization header missing 'Nostr ' prefix\r\n"); + printf("DEBUG: Authorization header missing 'Nostr ' prefix (found: %.10s)\r\n", auth_header); return NOSTR_ERROR_INVALID_INPUT; } // Extract base64 encoded event after "Nostr " const char* base64_event = auth_header + prefix_len; - printf("DEBUG: Base64 event from header: %.100s...\r\n", base64_event); + printf("DEBUG: Extracted base64 event (length=%zu): %.100s...\r\n", strlen(base64_event), base64_event); // Decode base64 to JSON using nostr_core_lib base64 decode unsigned char decoded_buffer[4096]; size_t decoded_len = base64_decode(base64_event, decoded_buffer); + printf("DEBUG: Base64 decode result - decoded_len=%zu\r\n", decoded_len); + if (decoded_len == 0) { - printf("DEBUG: Failed to decode base64 event\r\n"); + printf("DEBUG: Failed to decode base64 event - base64_decode returned 0\r\n"); return NOSTR_ERROR_INVALID_INPUT; } if (decoded_len >= json_size) { - printf("DEBUG: Decoded JSON too large for buffer\r\n"); + printf("DEBUG: Decoded JSON too large for buffer (decoded_len=%zu, json_size=%zu)\r\n", decoded_len, json_size); return NOSTR_ERROR_INVALID_INPUT; } @@ -362,7 +368,7 @@ int parse_authorization_header(const char* auth_header, char* event_json, size_t memcpy(event_json, decoded_buffer, decoded_len); event_json[decoded_len] = '\0'; - printf("DEBUG: Parsed authorization header, extracted JSON: %.100s...\r\n", event_json); + printf("DEBUG: Successfully decoded JSON (length=%zu): %s\r\n", decoded_len, event_json); return NOSTR_SUCCESS; } @@ -471,47 +477,791 @@ int validate_blossom_event(cJSON* event, const char* expected_hash, const char* // Main authentication function int authenticate_request(const char* auth_header, const char* method, const char* file_hash) { if (!auth_header) { - printf("DEBUG: No authorization header provided\r\n"); + printf("DEBUG: authenticate_request - No authorization header provided\r\n"); return NOSTR_ERROR_INVALID_INPUT; } - printf("DEBUG: Authenticating request - method: %s, hash: %s\r\n", + printf("DEBUG: authenticate_request ENTRY - method: %s, hash: %s\r\n", method ? method : "null", file_hash ? file_hash : "null"); // Parse authorization header char event_json[4096]; + printf("DEBUG: authenticate_request - calling parse_authorization_header\r\n"); int parse_result = parse_authorization_header(auth_header, event_json, sizeof(event_json)); if (parse_result != NOSTR_SUCCESS) { - printf("DEBUG: Authorization header parsing failed: %d\r\n", parse_result); + printf("DEBUG: authenticate_request - Authorization header parsing failed: %d\r\n", parse_result); return parse_result; } + printf("DEBUG: authenticate_request - parse_authorization_header succeeded\r\n"); // Parse JSON event + printf("DEBUG: authenticate_request - calling cJSON_Parse on: %s\r\n", event_json); cJSON* event = cJSON_Parse(event_json); if (!event) { - printf("DEBUG: Failed to parse JSON event\r\n"); + printf("DEBUG: authenticate_request - Failed to parse JSON event with cJSON_Parse\r\n"); return NOSTR_ERROR_EVENT_INVALID_CONTENT; } + printf("DEBUG: authenticate_request - cJSON_Parse succeeded, event parsed\r\n"); + + // Debug: Print event fields before validation + cJSON* id_json = cJSON_GetObjectItem(event, "id"); + cJSON* pubkey_json = cJSON_GetObjectItem(event, "pubkey"); + cJSON* sig_json = cJSON_GetObjectItem(event, "sig"); + cJSON* kind_json = cJSON_GetObjectItem(event, "kind"); + cJSON* created_at_json = cJSON_GetObjectItem(event, "created_at"); + + printf("DEBUG: authenticate_request - Event fields before validation:\r\n"); + printf("DEBUG: id: %s\r\n", id_json && cJSON_IsString(id_json) ? cJSON_GetStringValue(id_json) : "MISSING/INVALID"); + printf("DEBUG: pubkey: %s\r\n", pubkey_json && cJSON_IsString(pubkey_json) ? cJSON_GetStringValue(pubkey_json) : "MISSING/INVALID"); + printf("DEBUG: sig: %s\r\n", sig_json && cJSON_IsString(sig_json) ? cJSON_GetStringValue(sig_json) : "MISSING/INVALID"); + printf("DEBUG: kind: %d\r\n", kind_json && cJSON_IsNumber(kind_json) ? (int)cJSON_GetNumberValue(kind_json) : -999); + printf("DEBUG: created_at: %ld\r\n", created_at_json && cJSON_IsNumber(created_at_json) ? (long)cJSON_GetNumberValue(created_at_json) : -999); // Validate event structure and signature using nostr_core_lib + printf("DEBUG: authenticate_request - calling nostr_validate_event\r\n"); + + // Additional debug: Check pubkey characters before validation + if (pubkey_json && cJSON_IsString(pubkey_json)) { + const char* pubkey_str = cJSON_GetStringValue(pubkey_json); + printf("DEBUG: authenticate_request - Pre-validation pubkey analysis:\r\n"); + printf("DEBUG: Pubkey: %s\r\n", pubkey_str ? pubkey_str : "NULL"); + printf("DEBUG: Length: %zu\r\n", pubkey_str ? strlen(pubkey_str) : 0); + if (pubkey_str && strlen(pubkey_str) == 64) { + printf("DEBUG: Character analysis (first 10): "); + for (int i = 0; i < 10; i++) { + char c = pubkey_str[i]; + printf("%c(%d) ", c, (int)c); + } + printf("\r\n"); + printf("DEBUG: Character validation test: "); + int valid_chars = 1; + for (int i = 0; i < 64; i++) { + char c = pubkey_str[i]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'))) { + printf("INVALID at pos %d: %c(%d) ", i, c, (int)c); + valid_chars = 0; + } + } + if (valid_chars) { + printf("ALL VALID (lowercase hex)\r\n"); + } else { + printf("\r\n"); + } + } + } + int validation_result = nostr_validate_event(event); + printf("DEBUG: authenticate_request - nostr_validate_event returned: %d\r\n", validation_result); if (validation_result != NOSTR_SUCCESS) { - printf("DEBUG: Nostr event validation failed: %d (%s)\r\n", + printf("DEBUG: authenticate_request - Nostr event validation FAILED: %d (%s)\r\n", validation_result, nostr_strerror(validation_result)); + + // Additional debug: Check specific validation issues + if (pubkey_json && cJSON_IsString(pubkey_json)) { + const char* pubkey_str = cJSON_GetStringValue(pubkey_json); + printf("DEBUG: authenticate_request - Pubkey length: %zu, value: %s\r\n", + pubkey_str ? strlen(pubkey_str) : 0, pubkey_str ? pubkey_str : "NULL"); + } + cJSON_Delete(event); return validation_result; } + printf("DEBUG: authenticate_request - nostr_validate_event PASSED\r\n"); // Validate Blossom-specific requirements + printf("DEBUG: authenticate_request - calling validate_blossom_event\r\n"); int blossom_result = validate_blossom_event(event, file_hash, method); if (blossom_result != NOSTR_SUCCESS) { - printf("DEBUG: Blossom event validation failed: %d\r\n", blossom_result); + printf("DEBUG: authenticate_request - Blossom event validation failed: %d\r\n", blossom_result); cJSON_Delete(event); return blossom_result; } + printf("DEBUG: authenticate_request - validate_blossom_event PASSED\r\n"); cJSON_Delete(event); - printf("DEBUG: Authentication successful\r\n"); + printf("DEBUG: authenticate_request - Authentication successful, returning NOSTR_SUCCESS\r\n"); + return NOSTR_SUCCESS; +} + +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// +// AUTHENTICATION RULES SYSTEM (4.1.2) +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// + +// Authentication rule result structure +typedef struct { + int allowed; // 0 = denied, 1 = allowed + char reason[256]; // Human-readable reason + int rule_id; // Rule ID that made the decision (0 if no rule) + int priority; // Priority of the rule that matched +} auth_rule_result_t; + +// Check if authentication rules system is enabled +int auth_rules_enabled(void) { + sqlite3* db; + sqlite3_stmt* stmt; + int rc, enabled = 0; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + printf("DEBUG: Database open failed in auth_rules_enabled: %s\r\n", sqlite3_errmsg(db)); + return 0; // Disable rules if can't check database + } + + const char* sql = "SELECT value FROM server_config WHERE key = 'auth_rules_enabled'"; + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc == SQLITE_OK) { + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + const char* value = (const char*)sqlite3_column_text(stmt, 0); + enabled = (value && strcmp(value, "true") == 0) ? 1 : 0; + } + sqlite3_finalize(stmt); + } + sqlite3_close(db); + + return enabled; +} + +// Check pubkey whitelist rule +int check_pubkey_whitelist(const char* pubkey, const char* operation, auth_rule_result_t* result) { + if (!pubkey || !operation || !result) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + const char* sql = "SELECT id, priority, description FROM auth_rules " + "WHERE rule_type = 'pubkey_whitelist' AND rule_target = ? " + "AND (operation = ? OR operation = '*') AND enabled = 1 " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now')) " + "ORDER BY priority ASC, created_at ASC LIMIT 1"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, pubkey, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, operation, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + result->allowed = 1; + result->rule_id = sqlite3_column_int(stmt, 0); + result->priority = sqlite3_column_int(stmt, 1); + const char* description = (const char*)sqlite3_column_text(stmt, 2); + snprintf(result->reason, sizeof(result->reason), + "Allowed by whitelist rule: %s", description ? description : "pubkey whitelisted"); + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +// Check pubkey blacklist rule +int check_pubkey_blacklist(const char* pubkey, const char* operation, auth_rule_result_t* result) { + if (!pubkey || !operation || !result) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + const char* sql = "SELECT id, priority, description FROM auth_rules " + "WHERE rule_type = 'pubkey_blacklist' AND rule_target = ? " + "AND (operation = ? OR operation = '*') AND enabled = 1 " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now')) " + "ORDER BY priority ASC, created_at ASC LIMIT 1"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, pubkey, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, operation, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + result->allowed = 0; + result->rule_id = sqlite3_column_int(stmt, 0); + result->priority = sqlite3_column_int(stmt, 1); + const char* description = (const char*)sqlite3_column_text(stmt, 2); + snprintf(result->reason, sizeof(result->reason), + "Denied by blacklist rule: %s", description ? description : "pubkey blacklisted"); + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +// Check hash blacklist rule +int check_hash_blacklist(const char* hash, const char* operation, auth_rule_result_t* result) { + if (!hash || !operation || !result) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + const char* sql = "SELECT id, priority, description FROM auth_rules " + "WHERE rule_type = 'hash_blacklist' AND rule_target = ? " + "AND (operation = ? OR operation = '*') AND enabled = 1 " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now')) " + "ORDER BY priority ASC, created_at ASC LIMIT 1"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, hash, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, operation, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + result->allowed = 0; + result->rule_id = sqlite3_column_int(stmt, 0); + result->priority = sqlite3_column_int(stmt, 1); + const char* description = (const char*)sqlite3_column_text(stmt, 2); + snprintf(result->reason, sizeof(result->reason), + "Denied by hash blacklist rule: %s", description ? description : "hash blacklisted"); + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +// Check MIME type whitelist rule +int check_mime_type_whitelist(const char* mime_type, const char* operation, auth_rule_result_t* result) { + if (!mime_type || !operation || !result) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + // Check for exact match or wildcard patterns (e.g., "image/*") + const char* sql = "SELECT id, priority, description FROM auth_rules " + "WHERE rule_type = 'mime_type_whitelist' " + "AND (rule_target = ? OR (rule_target LIKE '%/*' AND ? LIKE REPLACE(rule_target, '*', '%'))) " + "AND (operation = ? OR operation = '*') AND enabled = 1 " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now')) " + "ORDER BY priority ASC, created_at ASC LIMIT 1"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, mime_type, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, mime_type, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, operation, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + result->allowed = 1; + result->rule_id = sqlite3_column_int(stmt, 0); + result->priority = sqlite3_column_int(stmt, 1); + const char* description = (const char*)sqlite3_column_text(stmt, 2); + snprintf(result->reason, sizeof(result->reason), + "Allowed by MIME type whitelist: %s", description ? description : "MIME type whitelisted"); + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +// Check MIME type blacklist rule +int check_mime_type_blacklist(const char* mime_type, const char* operation, auth_rule_result_t* result) { + if (!mime_type || !operation || !result) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + // Check for exact match or wildcard patterns (e.g., "application/*") + const char* sql = "SELECT id, priority, description FROM auth_rules " + "WHERE rule_type = 'mime_type_blacklist' " + "AND (rule_target = ? OR (rule_target LIKE '%/*' AND ? LIKE REPLACE(rule_target, '*', '%'))) " + "AND (operation = ? OR operation = '*') AND enabled = 1 " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now')) " + "ORDER BY priority ASC, created_at ASC LIMIT 1"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, mime_type, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, mime_type, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, operation, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + result->allowed = 0; + result->rule_id = sqlite3_column_int(stmt, 0); + result->priority = sqlite3_column_int(stmt, 1); + const char* description = (const char*)sqlite3_column_text(stmt, 2); + snprintf(result->reason, sizeof(result->reason), + "Denied by MIME type blacklist: %s", description ? description : "MIME type blacklisted"); + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +// Check file size limit rule +int check_size_limit(long file_size, const char* pubkey, const char* operation, auth_rule_result_t* result) { + if (!result || file_size < 0) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + // Check for pubkey-specific or global size limits + const char* sql = "SELECT id, priority, rule_value, description FROM auth_rules " + "WHERE rule_type = 'size_limit' " + "AND (rule_target = ? OR rule_target = '*') " + "AND (operation = ? OR operation = '*') AND enabled = 1 " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now')) " + "ORDER BY CASE WHEN rule_target = ? THEN 0 ELSE 1 END, priority ASC, created_at ASC LIMIT 1"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, pubkey ? pubkey : "*", -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, operation, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, pubkey ? pubkey : "*", -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + const char* size_limit_str = (const char*)sqlite3_column_text(stmt, 2); + long size_limit = size_limit_str ? atol(size_limit_str) : 0; + + if (size_limit > 0 && file_size > size_limit) { + result->allowed = 0; + result->rule_id = sqlite3_column_int(stmt, 0); + result->priority = sqlite3_column_int(stmt, 1); + const char* description = (const char*)sqlite3_column_text(stmt, 3); + snprintf(result->reason, sizeof(result->reason), + "File size %ld exceeds limit %ld: %s", + file_size, size_limit, description ? description : "size limit exceeded"); + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 1; + } + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// +// RULE EVALUATION ENGINE (4.1.3) +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// + +// Cache key generation for authentication decisions +void generate_auth_cache_key(const char* pubkey, const char* operation, const char* hash, + const char* mime_type, long file_size, char* cache_key, size_t key_size) { + char temp_buffer[1024]; + snprintf(temp_buffer, sizeof(temp_buffer), "%s|%s|%s|%s|%ld", + pubkey ? pubkey : "", operation ? operation : "", + hash ? hash : "", mime_type ? mime_type : "", file_size); + + // Generate SHA-256 hash of the key components for consistent cache keys + unsigned char hash_bytes[32]; + if (nostr_sha256((unsigned char*)temp_buffer, strlen(temp_buffer), hash_bytes) == NOSTR_SUCCESS) { + nostr_bytes_to_hex(hash_bytes, 32, cache_key); + cache_key[64] = '\0'; // Ensure null termination + } else { + // Fallback if hashing fails + strncpy(cache_key, temp_buffer, key_size - 1); + cache_key[key_size - 1] = '\0'; + } +} + +// Check authentication cache for previous decisions +int check_auth_cache(const char* cache_key, auth_rule_result_t* result) { + if (!cache_key || !result) { + return 0; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc) { + return 0; + } + + const char* sql = "SELECT allowed, rule_id, rule_reason FROM auth_cache " + "WHERE cache_key = ? AND expires_at > strftime('%s', 'now')"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(db); + return 0; + } + + sqlite3_bind_text(stmt, 1, cache_key, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + result->allowed = sqlite3_column_int(stmt, 0); + result->rule_id = sqlite3_column_int(stmt, 1); + result->priority = 0; // Not stored in cache + const char* reason = (const char*)sqlite3_column_text(stmt, 2); + if (reason) { + strncpy(result->reason, reason, sizeof(result->reason) - 1); + result->reason[sizeof(result->reason) - 1] = '\0'; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + printf("DEBUG: Cache hit for key: %.16s... (allowed=%d)\r\n", cache_key, result->allowed); + return 1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return 0; +} + +// Store authentication decision in cache +void store_auth_cache(const char* cache_key, const auth_rule_result_t* result) { + if (!cache_key || !result) { + return; + } + + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READWRITE, NULL); + if (rc) { + printf("DEBUG: Failed to open database for caching: %s\r\n", sqlite3_errmsg(db)); + return; + } + + // Get cache TTL from server config (default 5 minutes) + int cache_ttl = 300; + const char* ttl_sql = "SELECT value FROM server_config WHERE key = 'auth_cache_ttl'"; + rc = sqlite3_prepare_v2(db, ttl_sql, -1, &stmt, NULL); + if (rc == SQLITE_OK) { + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + const char* ttl_value = (const char*)sqlite3_column_text(stmt, 0); + if (ttl_value) { + cache_ttl = atoi(ttl_value); + } + } + sqlite3_finalize(stmt); + } + + // Insert or replace cache entry + const char* insert_sql = "INSERT OR REPLACE INTO auth_cache " + "(cache_key, allowed, rule_id, rule_reason, expires_at) " + "VALUES (?, ?, ?, ?, strftime('%s', 'now') + ?)"; + + rc = sqlite3_prepare_v2(db, insert_sql, -1, &stmt, NULL); + if (rc == SQLITE_OK) { + sqlite3_bind_text(stmt, 1, cache_key, -1, SQLITE_STATIC); + sqlite3_bind_int(stmt, 2, result->allowed); + sqlite3_bind_int(stmt, 3, result->rule_id); + sqlite3_bind_text(stmt, 4, result->reason, -1, SQLITE_STATIC); + sqlite3_bind_int(stmt, 5, cache_ttl); + + rc = sqlite3_step(stmt); + if (rc == SQLITE_DONE) { + printf("DEBUG: Cached auth decision for key: %.16s... (TTL=%d)\r\n", cache_key, cache_ttl); + } else { + printf("DEBUG: Failed to cache auth decision: %s\r\n", sqlite3_errmsg(db)); + } + sqlite3_finalize(stmt); + } + + sqlite3_close(db); +} + +// Main rule evaluation function +int evaluate_auth_rules(const char* pubkey, const char* operation, const char* hash, + const char* mime_type, long file_size, auth_rule_result_t* result) { + if (!result) { + return 0; + } + + // Initialize result structure + memset(result, 0, sizeof(auth_rule_result_t)); + result->allowed = 1; // Default allow if no rules apply + strcpy(result->reason, "No rules matched - default allow"); + + printf("DEBUG: evaluate_auth_rules called - pubkey=%s, op=%s, hash=%s, mime=%s, size=%ld\r\n", + pubkey ? pubkey : "NULL", operation ? operation : "NULL", + hash ? hash : "NULL", mime_type ? mime_type : "NULL", file_size); + + // Check if authentication rules system is enabled + if (!auth_rules_enabled()) { + printf("DEBUG: Authentication rules system is disabled\r\n"); + strcpy(result->reason, "Authentication rules system disabled - default allow"); + return 1; + } + + // Generate cache key for this request + char cache_key[128]; + generate_auth_cache_key(pubkey, operation, hash, mime_type, file_size, cache_key, sizeof(cache_key)); + + // Check cache first for performance + if (check_auth_cache(cache_key, result)) { + printf("DEBUG: Using cached authentication decision\r\n"); + return 1; + } + + printf("DEBUG: No cache hit - evaluating rules in priority order\r\n"); + + // Evaluate rules in priority order (lower priority number = higher precedence) + auth_rule_result_t rule_result; + int highest_priority = 9999; + int rule_matched = 0; + + // 1. Check pubkey blacklist first (highest security priority) + if (pubkey && check_pubkey_blacklist(pubkey, operation, &rule_result)) { + if (rule_result.priority < highest_priority) { + *result = rule_result; + highest_priority = rule_result.priority; + rule_matched = 1; + printf("DEBUG: Pubkey blacklist rule matched (priority %d)\r\n", rule_result.priority); + } + } + + // 2. Check hash blacklist + if (hash && check_hash_blacklist(hash, operation, &rule_result)) { + if (rule_result.priority < highest_priority) { + *result = rule_result; + highest_priority = rule_result.priority; + rule_matched = 1; + printf("DEBUG: Hash blacklist rule matched (priority %d)\r\n", rule_result.priority); + } + } + + // 3. Check MIME type blacklist + if (mime_type && check_mime_type_blacklist(mime_type, operation, &rule_result)) { + if (rule_result.priority < highest_priority) { + *result = rule_result; + highest_priority = rule_result.priority; + rule_matched = 1; + printf("DEBUG: MIME type blacklist rule matched (priority %d)\r\n", rule_result.priority); + } + } + + // 4. Check file size limits + if (file_size > 0 && check_size_limit(file_size, pubkey, operation, &rule_result)) { + if (rule_result.priority < highest_priority) { + *result = rule_result; + highest_priority = rule_result.priority; + rule_matched = 1; + printf("DEBUG: Size limit rule matched (priority %d)\r\n", rule_result.priority); + } + } + + // 5. Check pubkey whitelist (only matters if not already denied) + if (pubkey && result->allowed && check_pubkey_whitelist(pubkey, operation, &rule_result)) { + if (rule_result.priority < highest_priority) { + *result = rule_result; + highest_priority = rule_result.priority; + rule_matched = 1; + printf("DEBUG: Pubkey whitelist rule matched (priority %d)\r\n", rule_result.priority); + } + } + + // 6. Check MIME type whitelist (only if not already denied) + if (mime_type && result->allowed && check_mime_type_whitelist(mime_type, operation, &rule_result)) { + if (rule_result.priority < highest_priority) { + *result = rule_result; + highest_priority = rule_result.priority; + rule_matched = 1; + printf("DEBUG: MIME type whitelist rule matched (priority %d)\r\n", rule_result.priority); + } + } + + // Special case: If we have whitelist rules but no whitelist matched, deny by default + if (result->allowed && pubkey) { + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); + if (rc == SQLITE_OK) { + // Check if any pubkey whitelist rules exist for this operation + const char* sql = "SELECT COUNT(*) FROM auth_rules " + "WHERE rule_type = 'pubkey_whitelist' AND enabled = 1 " + "AND (operation = ? OR operation = '*') " + "AND (expires_at IS NULL OR expires_at > strftime('%s', 'now'))"; + + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc == SQLITE_OK) { + sqlite3_bind_text(stmt, 1, operation, -1, SQLITE_STATIC); + rc = sqlite3_step(stmt); + if (rc == SQLITE_ROW) { + int whitelist_count = sqlite3_column_int(stmt, 0); + if (whitelist_count > 0) { + // Whitelist exists but didn't match - deny + result->allowed = 0; + result->rule_id = 0; + result->priority = 0; + snprintf(result->reason, sizeof(result->reason), + "Denied - pubkey not in whitelist (found %d whitelist rules)", whitelist_count); + rule_matched = 1; + printf("DEBUG: Denied due to whitelist policy - pubkey not whitelisted\r\n"); + } + } + sqlite3_finalize(stmt); + } + sqlite3_close(db); + } + } + + // Cache the decision for future requests + store_auth_cache(cache_key, result); + + printf("DEBUG: Rule evaluation complete - allowed=%d, rule_id=%d, reason=%s\r\n", + result->allowed, result->rule_id, result->reason); + + return rule_matched; +} + +// Enhanced authentication function that integrates rule evaluation +int authenticate_request_with_rules(const char* auth_header, const char* method, const char* file_hash, + const char* mime_type, long file_size) { + printf("DEBUG: authenticate_request_with_rules called - method: %s, file_hash: %s, mime_type: %s, file_size: %ld\r\n", + method ? method : "NULL", file_hash ? file_hash : "NULL", mime_type ? mime_type : "NULL", file_size); + + // Step 1: Basic nostr authentication (if header provided) + const char* pubkey = NULL; + static char pubkey_buffer[256]; + + if (auth_header) { + printf("DEBUG: Authorization header provided, starting basic nostr authentication\r\n"); + // Parse and validate nostr event first + int auth_result = authenticate_request(auth_header, method, file_hash); + if (auth_result != NOSTR_SUCCESS) { + printf("DEBUG: Basic nostr authentication failed: %d (%s)\r\n", auth_result, nostr_strerror(auth_result)); + return auth_result; + } + printf("DEBUG: Basic nostr authentication PASSED\r\n"); + + // Extract pubkey from validated event + char event_json[4096]; + int parse_result = parse_authorization_header(auth_header, event_json, sizeof(event_json)); + if (parse_result == NOSTR_SUCCESS) { + cJSON* event = cJSON_Parse(event_json); + if (event) { + cJSON* pubkey_json = cJSON_GetObjectItem(event, "pubkey"); + if (pubkey_json && cJSON_IsString(pubkey_json)) { + const char* temp_pubkey = cJSON_GetStringValue(pubkey_json); + if (temp_pubkey) { + strncpy(pubkey_buffer, temp_pubkey, sizeof(pubkey_buffer)-1); + pubkey_buffer[sizeof(pubkey_buffer)-1] = '\0'; + pubkey = pubkey_buffer; + } + } + cJSON_Delete(event); + } + } + printf("DEBUG: Extracted pubkey from auth: %s\r\n", pubkey ? pubkey : "NULL"); + } else { + printf("DEBUG: No authorization header - evaluating rules for anonymous request\r\n"); + } + + // Step 2: Evaluate authentication rules + auth_rule_result_t rule_result; + int rule_evaluated = evaluate_auth_rules(pubkey, method, file_hash, mime_type, file_size, &rule_result); + + if (rule_evaluated && !rule_result.allowed) { + printf("DEBUG: Request denied by authentication rules: %s\r\n", rule_result.reason); + return NOSTR_ERROR_INVALID_INPUT; // Authentication denied by rules + } + + printf("DEBUG: Request allowed - nostr auth + rules passed\r\n"); return NOSTR_SUCCESS; } @@ -603,7 +1353,7 @@ void handle_list_request(const char* pubkey) { if (auth_header) { printf("DEBUG: Authorization header provided for list request\r\n"); - int auth_result = authenticate_request(auth_header, "list", NULL); + int auth_result = authenticate_request_with_rules(auth_header, "list", NULL, NULL, 0); if (auth_result != NOSTR_SUCCESS) { send_error_response(401, "authentication_failed", "Invalid or expired authentication", "The provided Nostr event is invalid, expired, or does not authorize this operation"); @@ -731,6 +1481,216 @@ void handle_list_request(const char* pubkey) { log_request("GET", "/list", auth_status, 200); } +// Handle DELETE / requests +void handle_delete_request(const char* sha256) { + printf("DEBUG: handle_delete_request called with sha256=%s\r\n", sha256 ? sha256 : "NULL"); + + // Log the incoming request + log_request("DELETE", "/delete", "pending", 0); + + // Validate SHA-256 format (64 hex characters) + if (!sha256 || strlen(sha256) != 64) { + send_error_response(400, "invalid_hash", "Invalid SHA-256 hash format", "Hash must be 64 hex characters"); + log_request("DELETE", "/delete", "none", 400); + return; + } + + // Validate hex characters + for (int i = 0; i < 64; i++) { + char c = sha256[i]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) { + send_error_response(400, "invalid_hash", "Invalid SHA-256 hash format", "Hash must contain only hex characters"); + log_request("DELETE", "/delete", "none", 400); + return; + } + } + + // Require authorization for delete operations + const char* auth_header = getenv("HTTP_AUTHORIZATION"); + if (!auth_header) { + send_error_response(401, "authorization_required", "Authorization required for delete operations", + "Delete operations require a valid Nostr authorization event"); + log_request("DELETE", "/delete", "missing_auth", 401); + return; + } + + // Authenticate the request with enhanced rules system + int auth_result = authenticate_request_with_rules(auth_header, "delete", sha256, NULL, 0); + if (auth_result != NOSTR_SUCCESS) { + send_error_response(401, "authentication_failed", "Invalid or expired authentication", + "The provided Nostr event is invalid, expired, or does not authorize this operation"); + log_request("DELETE", "/delete", "failed", 401); + return; + } + + // Extract pubkey from authorization for ownership check + char event_json[4096]; + int parse_result = parse_authorization_header(auth_header, event_json, sizeof(event_json)); + if (parse_result != NOSTR_SUCCESS) { + send_error_response(401, "authentication_failed", "Failed to parse authorization", + "The provided authorization could not be parsed"); + log_request("DELETE", "/delete", "parse_failed", 401); + return; + } + + cJSON* event = cJSON_Parse(event_json); + if (!event) { + send_error_response(401, "authentication_failed", "Invalid JSON in authorization", + "The provided authorization contains invalid JSON"); + log_request("DELETE", "/delete", "invalid_json", 401); + return; + } + + cJSON* pubkey_json = cJSON_GetObjectItem(event, "pubkey"); + if (!pubkey_json || !cJSON_IsString(pubkey_json)) { + cJSON_Delete(event); + send_error_response(401, "authentication_failed", "Missing pubkey in authorization", + "The provided authorization does not contain a valid pubkey"); + log_request("DELETE", "/delete", "missing_pubkey", 401); + return; + } + + const char* auth_pubkey = cJSON_GetStringValue(pubkey_json); + cJSON_Delete(event); + + // Check if blob exists in database + sqlite3* db; + sqlite3_stmt* stmt; + int rc; + + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READWRITE, NULL); + if (rc) { + printf("DEBUG: Database open failed: %s\r\n", sqlite3_errmsg(db)); + send_error_response(500, "database_error", "Failed to access database", "Internal server error"); + log_request("DELETE", "/delete", "authenticated", 500); + return; + } + + // Query blob metadata and check ownership + const char* sql = "SELECT uploader_pubkey, type FROM blobs WHERE sha256 = ?"; + rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + printf("DEBUG: SQL prepare failed: %s\r\n", sqlite3_errmsg(db)); + sqlite3_close(db); + send_error_response(500, "database_error", "Failed to prepare query", "Internal server error"); + log_request("DELETE", "/delete", "authenticated", 500); + return; + } + + sqlite3_bind_text(stmt, 1, sha256, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + if (rc != SQLITE_ROW) { + sqlite3_finalize(stmt); + sqlite3_close(db); + send_error_response(404, "blob_not_found", "Blob not found", "The specified blob does not exist"); + log_request("DELETE", "/delete", "authenticated", 404); + return; + } + + // Get blob metadata + const char* uploader_pubkey = (const char*)sqlite3_column_text(stmt, 0); + const char* blob_type = (const char*)sqlite3_column_text(stmt, 1); + + // Create copies of the strings since they may be invalidated after finalize + char uploader_pubkey_copy[256] = {0}; + char blob_type_copy[128] = {0}; + + if (uploader_pubkey) { + strncpy(uploader_pubkey_copy, uploader_pubkey, sizeof(uploader_pubkey_copy) - 1); + } + if (blob_type) { + strncpy(blob_type_copy, blob_type, sizeof(blob_type_copy) - 1); + } + + sqlite3_finalize(stmt); + + // Check ownership - only the uploader can delete + if (!uploader_pubkey_copy[0] || strcmp(uploader_pubkey_copy, auth_pubkey) != 0) { + sqlite3_close(db); + send_error_response(403, "access_denied", "Access denied", "You can only delete blobs that you uploaded"); + log_request("DELETE", "/delete", "ownership_denied", 403); + return; + } + + printf("DEBUG: Ownership check passed, proceeding with deletion\r\n"); + + // Delete from database first + const char* delete_sql = "DELETE FROM blobs WHERE sha256 = ?"; + rc = sqlite3_prepare_v2(db, delete_sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + printf("DEBUG: Delete SQL prepare failed: %s\r\n", sqlite3_errmsg(db)); + sqlite3_close(db); + send_error_response(500, "database_error", "Failed to prepare delete", "Internal server error"); + log_request("DELETE", "/delete", "authenticated", 500); + return; + } + + sqlite3_bind_text(stmt, 1, sha256, -1, SQLITE_STATIC); + + rc = sqlite3_step(stmt); + sqlite3_finalize(stmt); + sqlite3_close(db); + + if (rc != SQLITE_DONE) { + printf("DEBUG: Database delete failed: %d\r\n", rc); + send_error_response(500, "database_error", "Failed to delete blob metadata", "Internal server error"); + log_request("DELETE", "/delete", "authenticated", 500); + return; + } + + printf("DEBUG: Blob metadata deleted from database\r\n"); + + // Determine file extension from MIME type and delete physical file + const char* extension = ""; + if (strstr(blob_type_copy, "image/jpeg")) { + extension = ".jpg"; + } else if (strstr(blob_type_copy, "image/webp")) { + extension = ".webp"; + } else if (strstr(blob_type_copy, "image/png")) { + extension = ".png"; + } else if (strstr(blob_type_copy, "image/gif")) { + extension = ".gif"; + } else if (strstr(blob_type_copy, "video/mp4")) { + extension = ".mp4"; + } else if (strstr(blob_type_copy, "video/webm")) { + extension = ".webm"; + } else if (strstr(blob_type_copy, "audio/mpeg")) { + extension = ".mp3"; + } else if (strstr(blob_type_copy, "audio/ogg")) { + extension = ".ogg"; + } else if (strstr(blob_type_copy, "text/plain")) { + extension = ".txt"; + } else { + extension = ".bin"; + } + + char filepath[MAX_PATH_LEN]; + snprintf(filepath, sizeof(filepath), "blobs/%s%s", sha256, extension); + + printf("DEBUG: Attempting to delete file: %s\r\n", filepath); + + if (unlink(filepath) != 0) { + printf("DEBUG: Failed to delete physical file: %s\r\n", filepath); + // File deletion failed, but database is already updated + // Log warning but don't fail the request + printf("WARNING: Physical file deletion failed, but metadata was removed\r\n"); + } else { + printf("DEBUG: Physical file deleted successfully\r\n"); + } + + // Return success response + printf("Status: 200 OK\r\n"); + printf("Content-Type: application/json\r\n\r\n"); + printf("{\n"); + printf(" \"message\": \"Blob deleted successfully\",\n"); + printf(" \"sha256\": \"%s\"\n", sha256); + printf("}\n"); + + printf("DEBUG: Delete operation completed successfully\r\n"); + log_request("DELETE", "/delete", "authenticated", 200); +} + // Handle PUT /upload requests void handle_upload_request(void) { printf("DEBUG: handle_upload_request called\r\n"); @@ -769,40 +1729,11 @@ void handle_upload_request(void) { const char* auth_header = getenv("HTTP_AUTHORIZATION"); printf("DEBUG: Raw Authorization header: %s\r\n", auth_header ? auth_header : "NULL"); - // For authenticated uploads, validate the authorization + // Store uploader pubkey for metadata (will be extracted during auth if provided) const char* uploader_pubkey = NULL; if (auth_header) { - // Authenticate the request first (before processing file) - int auth_result = authenticate_request(auth_header, "PUT", NULL); - if (auth_result != NOSTR_SUCCESS) { - send_error_response(401, "authentication_failed", "Invalid or expired authentication", - "The provided Nostr event is invalid, expired, or does not authorize this operation"); - log_request("PUT", "/upload", "failed", 401); - return; - } - - // Extract pubkey for metadata storage - char event_json[4096]; - int parse_result = parse_authorization_header(auth_header, event_json, sizeof(event_json)); - if (parse_result == NOSTR_SUCCESS) { - cJSON* event = cJSON_Parse(event_json); - if (event) { - cJSON* pubkey_json = cJSON_GetObjectItem(event, "pubkey"); - if (pubkey_json && cJSON_IsString(pubkey_json)) { - const char* temp_pubkey = cJSON_GetStringValue(pubkey_json); - static char pubkey_buffer[256]; - if (temp_pubkey) { - strncpy(pubkey_buffer, temp_pubkey, sizeof(pubkey_buffer)-1); - pubkey_buffer[sizeof(pubkey_buffer)-1] = '\0'; - uploader_pubkey = pubkey_buffer; - } - } - cJSON_Delete(event); - } - } - log_request("PUT", "/upload", "authenticated", 0); + log_request("PUT", "/upload", "auth_provided", 0); } else { - // No authentication provided - allow anonymous uploads log_request("PUT", "/upload", "anonymous", 0); } @@ -842,18 +1773,43 @@ void handle_upload_request(void) { nostr_bytes_to_hex(hash, 32, sha256_hex); printf("DEBUG: Calculated SHA-256: %s\r\n", sha256_hex); - // For authenticated uploads, verify hash matches the one in the authorization event + // TEMPORARY FIX: Bypass rules system and use simple authentication + int auth_result = NOSTR_SUCCESS; if (auth_header) { - int auth_result = authenticate_request(auth_header, "PUT", sha256_hex); + auth_result = authenticate_request(auth_header, "upload", sha256_hex); if (auth_result != NOSTR_SUCCESS) { free(file_data); - send_error_response(409, "hash_mismatch", "File hash does not match authorization", - "The calculated SHA-256 hash of the uploaded file does not match the hash specified in the authorization event"); - log_request("PUT", "/upload", "hash_conflict", 409); + send_error_response(401, "authentication_failed", "Authentication failed", + "The request failed basic nostr authentication"); + log_request("PUT", "/upload", "auth_failed", 401); return; } } + // Extract uploader pubkey from authorization if provided + if (auth_header) { + char event_json[4096]; + int parse_result = parse_authorization_header(auth_header, event_json, sizeof(event_json)); + if (parse_result == NOSTR_SUCCESS) { + cJSON* event = cJSON_Parse(event_json); + if (event) { + cJSON* pubkey_json = cJSON_GetObjectItem(event, "pubkey"); + if (pubkey_json && cJSON_IsString(pubkey_json)) { + static char pubkey_buffer[256]; + const char* temp_pubkey = cJSON_GetStringValue(pubkey_json); + if (temp_pubkey) { + strncpy(pubkey_buffer, temp_pubkey, sizeof(pubkey_buffer)-1); + pubkey_buffer[sizeof(pubkey_buffer)-1] = '\0'; + uploader_pubkey = pubkey_buffer; + } + } + cJSON_Delete(event); + } + } + } + + printf("DEBUG: Authentication passed, uploader_pubkey: %s\r\n", uploader_pubkey ? uploader_pubkey : "anonymous"); + // Determine file extension from Content-Type const char* extension = ""; if (strstr(content_type, "image/jpeg")) { @@ -1060,6 +2016,16 @@ int main(void) { send_error_response(400, "invalid_pubkey", "Invalid pubkey format", "Pubkey must be 64 hex characters"); log_request("GET", request_uri, "none", 400); } + } else if (strcmp(request_method, "DELETE") == 0) { + // Handle DELETE / requests + const char* sha256 = extract_sha256_from_uri(request_uri); + printf("DEBUG: DELETE request - extracted SHA256=%s\r\n", sha256 ? sha256 : "NULL"); + if (sha256) { + handle_delete_request(sha256); + } else { + send_error_response(400, "invalid_hash", "Invalid SHA-256 hash in URI", "URI must contain a valid 64-character hex hash"); + log_request("DELETE", request_uri, "none", 400); + } } else { // Other methods not implemented yet printf("Status: 501 Not Implemented\r\n");