sub314xxl commited on
Commit
c78c282
·
verified ·
1 Parent(s): ea43483

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +429 -19
index.html CHANGED
@@ -1,19 +1,429 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Nginx Configuration Analyzer for Yandex Cloud</title>
7
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
+ <style>
9
+ :root {
10
+ --primary: #2E86AB;
11
+ --secondary: #A23B72;
12
+ --accent: #F18F01;
13
+ --light: #F5F5F5;
14
+ --dark: #2D2D2D;
15
+ --success: #4CAF50;
16
+ --warning: #FFC107;
17
+ --danger: #F44336;
18
+ }
19
+
20
+ * {
21
+ margin: 0;
22
+ padding: 0;
23
+ box-sizing: border-box;
24
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
25
+ }
26
+
27
+ body {
28
+ background-color: var(--light);
29
+ color: var(--dark);
30
+ line-height: 1.6;
31
+ }
32
+
33
+ header {
34
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
35
+ color: white;
36
+ padding: 1.5rem;
37
+ text-align: center;
38
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
39
+ }
40
+
41
+ .container {
42
+ max-width: 1200px;
43
+ margin: 0 auto;
44
+ padding: 2rem;
45
+ }
46
+
47
+ h1 {
48
+ font-size: 2.5rem;
49
+ margin-bottom: 0.5rem;
50
+ }
51
+
52
+ .subtitle {
53
+ font-size: 1.2rem;
54
+ opacity: 0.9;
55
+ margin-bottom: 1rem;
56
+ }
57
+
58
+ .built-with {
59
+ font-size: 0.9rem;
60
+ opacity: 0.8;
61
+ margin-top: 1rem;
62
+ }
63
+
64
+ .built-with a {
65
+ color: white;
66
+ text-decoration: none;
67
+ }
68
+
69
+ .built-with a:hover {
70
+ text-decoration: underline;
71
+ }
72
+
73
+ .config-section {
74
+ background: white;
75
+ border-radius: 10px;
76
+ padding: 2rem;
77
+ margin-bottom: 2rem;
78
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
79
+ }
80
+
81
+ .section-title {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: 1rem;
85
+ margin-bottom: 1.5rem;
86
+ color: var(--primary);
87
+ }
88
+
89
+ .section-title i {
90
+ font-size: 1.5rem;
91
+ }
92
+
93
+ .config-block {
94
+ background: #f8f9fa;
95
+ border-left: 4px solid var(--primary);
96
+ padding: 1rem 1.5rem;
97
+ margin-bottom: 1.5rem;
98
+ border-radius: 5px;
99
+ font-family: 'Courier New', monospace;
100
+ font-size: 0.9rem;
101
+ white-space: pre-wrap;
102
+ overflow-x: auto;
103
+ }
104
+
105
+ .explanation {
106
+ margin-bottom: 1.5rem;
107
+ }
108
+
109
+ .explanation-title {
110
+ font-weight: bold;
111
+ color: var(--secondary);
112
+ margin-bottom: 0.5rem;
113
+ }
114
+
115
+ .source-link {
116
+ display: inline-block;
117
+ margin-top: 0.5rem;
118
+ color: var(--accent);
119
+ text-decoration: none;
120
+ font-style: italic;
121
+ }
122
+
123
+ .source-link:hover {
124
+ text-decoration: underline;
125
+ }
126
+
127
+ .badge {
128
+ display: inline-block;
129
+ padding: 0.3rem 0.6rem;
130
+ border-radius: 20px;
131
+ font-size: 0.8rem;
132
+ font-weight: bold;
133
+ margin-right: 0.5rem;
134
+ }
135
+
136
+ .badge-success {
137
+ background-color: rgba(76, 175, 80, 0.2);
138
+ color: var(--success);
139
+ }
140
+
141
+ .badge-warning {
142
+ background-color: rgba(255, 193, 7, 0.2);
143
+ color: var(--warning);
144
+ }
145
+
146
+ .badge-danger {
147
+ background-color: rgba(244, 67, 54, 0.2);
148
+ color: var(--danger);
149
+ }
150
+
151
+ .performance-metric {
152
+ display: flex;
153
+ justify-content: space-between;
154
+ padding: 0.8rem;
155
+ margin-bottom: 1rem;
156
+ background: white;
157
+ border-radius: 5px;
158
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
159
+ }
160
+
161
+ .metric-name {
162
+ font-weight: bold;
163
+ color: var(--primary);
164
+ }
165
+
166
+ .metric-value {
167
+ font-weight: bold;
168
+ color: var(--accent);
169
+ }
170
+
171
+ .recommendation {
172
+ background: rgba(241, 143, 1, 0.1);
173
+ border-left: 4px solid var(--accent);
174
+ padding: 1rem;
175
+ margin-bottom: 1.5rem;
176
+ border-radius: 5px;
177
+ }
178
+
179
+ .recommendation-title {
180
+ font-weight: bold;
181
+ color: var(--accent);
182
+ margin-bottom: 0.5rem;
183
+ }
184
+
185
+ footer {
186
+ text-align: center;
187
+ padding: 1.5rem;
188
+ background: var(--dark);
189
+ color: white;
190
+ margin-top: 2rem;
191
+ }
192
+
193
+ @media (max-width: 768px) {
194
+ .container {
195
+ padding: 1rem;
196
+ }
197
+
198
+ h1 {
199
+ font-size: 2rem;
200
+ }
201
+
202
+ .section-title {
203
+ flex-direction: column;
204
+ align-items: flex-start;
205
+ gap: 0.5rem;
206
+ }
207
+ }
208
+ </style>
209
+ </head>
210
+ <body>
211
+ <header>
212
+ <h1>Nginx Configuration Analyzer</h1>
213
+ <p class="subtitle">Optimized for Yandex Cloud Managed Kubernetes</p>
214
+ <div class="built-with">
215
+ Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">anycoder</a>
216
+ </div>
217
+ </header>
218
+
219
+ <div class="container">
220
+ <div class="config-section">
221
+ <div class="section-title">
222
+ <i class="fas fa-cog"></i>
223
+ <h2>Optimized Nginx Configuration</h2>
224
+ </div>
225
+
226
+ <div class="config-block">
227
+ worker_processes auto;
228
+ worker_rlimit_nofile 100000;
229
+
230
+ events {
231
+ worker_connections 4096;
232
+ multi_accept on;
233
+ use epoll;
234
+ }
235
+
236
+ http {
237
+ sendfile on;
238
+ tcp_nopush on;
239
+ tcp_nodelay on;
240
+ keepalive_timeout 75s;
241
+ keepalive_requests 1000;
242
+ client_max_body_size 16m;
243
+ client_body_buffer_size 128k;
244
+ large_client_header_buffers 4 16k;
245
+ server_tokens off;
246
+ reset_timedout_connection on;
247
+ types_hash_max_size 2048;
248
+
249
+ gzip on;
250
+ gzip_vary on;
251
+ gzip_proxied any;
252
+ gzip_comp_level 6;
253
+ gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
254
+
255
+ open_file_cache max=1000 inactive=20s;
256
+ open_file_cache_valid 30s;
257
+ open_file_cache_min_uses 2;
258
+ open_file_cache_errors on;
259
+
260
+ server {
261
+ listen 80;
262
+ server_name _;
263
+
264
+ location / {
265
+ proxy_pass http://backend;
266
+ proxy_http_version 1.1;
267
+ proxy_set_header Connection "";
268
+ proxy_set_header Host $host;
269
+ proxy_set_header X-Real-IP $remote_addr;
270
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
271
+ proxy_set_header X-Forwarded-Proto $scheme;
272
+ proxy_buffering on;
273
+ proxy_buffer_size 128k;
274
+ proxy_buffers 4 256k;
275
+ proxy_busy_buffers_size 256k;
276
+ proxy_max_temp_file_size 0;
277
+ proxy_connect_timeout 90;
278
+ proxy_send_timeout 90;
279
+ proxy_read_timeout 90;
280
+ }
281
+ }
282
+ }
283
+ </div>
284
+
285
+ <div class="explanation">
286
+ <div class="explanation-title">Key Optimizations Explained:</div>
287
+
288
+ <div class="performance-metric">
289
+ <div class="metric-name">Worker Processes</div>
290
+ <div class="metric-value">auto</div>
291
+ </div>
292
+ <p>Automatically sets worker processes to match CPU cores. <span class="badge badge-success">Recommended</span> for modern multi-core systems.</p>
293
+ <a href="https://nginx.org/en/docs/ngx_core_module.html#worker_processes" class="source-link" target="_blank">Official Nginx Documentation (2025)</a>
294
+
295
+ <div class="performance-metric">
296
+ <div class="metric-name">File Descriptors</div>
297
+ <div class="metric-value">100,000</div>
298
+ </div>
299
+ <p>Increased from default to handle more concurrent connections in Kubernetes environment.</p>
300
+ <a href="https://www.nginx.com/blog/tuning-nginx/" class="source-link" target="_blank">Nginx Tuning Guide (2025)</a>
301
+
302
+ <div class="performance-metric">
303
+ <div class="metric-name">Event Model</div>
304
+ <div class="metric-value">epoll</div>
305
+ </div>
306
+ <p>Most efficient for Linux systems, especially in cloud environments.</p>
307
+ <a href="https://nginx.org/en/docs/events.html" class="source-link" target="_blank">Nginx Event Types (2025)</a>
308
+
309
+ <div class="recommendation">
310
+ <div class="recommendation-title">Yandex Cloud Specific Recommendations:</div>
311
+ <ul>
312
+ <li>Enabled <code>multi_accept</code> to accept multiple connections at once, reducing latency in managed Kubernetes</li>
313
+ <li>Configured <code>keepalive</code> settings for better connection reuse in containerized environments</li>
314
+ <li>Added <code>reset_timedout_connection</code> to properly handle timeouts in cloud networking</li>
315
+ <li>Optimized proxy settings for Kubernetes service communication</li>
316
+ </ul>
317
+ </div>
318
+ </div>
319
+ </div>
320
+
321
+ <div class="config-section">
322
+ <div class="section-title">
323
+ <i class="fas fa-shield-alt"></i>
324
+ <h2>Security Enhancements</h2>
325
+ </div>
326
+
327
+ <div class="config-block">
328
+ # Security headers
329
+ add_header X-Frame-Options "SAMEORIGIN" always;
330
+ add_header X-Content-Type-Options "nosniff" always;
331
+ add_header X-XSS-Protection "1; mode=block" always;
332
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
333
+ add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
334
+
335
+ # SSL Configuration (recommended for production)
336
+ ssl_protocols TLSv1.2 TLSv1.3;
337
+ ssl_prefer_server_ciphers on;
338
+ ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384";
339
+ ssl_session_cache shared:SSL:10m;
340
+ ssl_session_timeout 10m;
341
+ </div>
342
+
343
+ <div class="explanation">
344
+ <div class="explanation-title">Security Measures:</div>
345
+ <p>Added comprehensive security headers to protect against common web vulnerabilities. SSL configuration follows modern best practices for 2025.</p>
346
+ <a href="https://nginx.org/en/docs/http/ngx_http_ssl_module.html" class="source-link" target="_blank">Nginx SSL Module Documentation</a>
347
+ <br>
348
+ <a href="https://owasp.org/www-project-secure-headers/" class="source-link" target="_blank">OWASP Secure Headers Project</a>
349
+ </div>
350
+ </div>
351
+
352
+ <div class="config-section">
353
+ <div class="section-title">
354
+ <i class="fas fa-chart-line"></i>
355
+ <h2>Performance Metrics</h2>
356
+ </div>
357
+
358
+ <div class="performance-metric">
359
+ <div class="metric-name">Expected Concurrent Connections</div>
360
+ <div class="metric-value">~40,000</div>
361
+ </div>
362
+ <p>With worker_connections=4096 and auto worker_processes (assuming 10 cores)</p>
363
+
364
+ <div class="performance-metric">
365
+ <div class="metric-name">Memory Efficiency</div>
366
+ <div class="metric-value">Optimized</div>
367
+ </div>
368
+ <p>Open file cache and proper buffer sizes reduce memory overhead</p>
369
+
370
+ <div class="performance-metric">
371
+ <div class="metric-name">Gzip Compression</div>
372
+ <div class="metric-value">Enabled (Level 6)</div>
373
+ </div>
374
+ <p>Balanced compression level for good performance and size reduction</p>
375
+ </div>
376
+ </div>
377
+
378
+ <footer>
379
+ <p>© 2025 Nginx Configuration Analyzer for Yandex Cloud | All rights reserved</p>
380
+ </footer>
381
+
382
+ <script>
383
+ // Simple interactive elements
384
+ document.addEventListener('DOMContentLoaded', function() {
385
+ // Add copy functionality to config blocks
386
+ const configBlocks = document.querySelectorAll('.config-block');
387
+ configBlocks.forEach(block => {
388
+ const copyBtn = document.createElement('button');
389
+ copyBtn.innerHTML = '<i class="far fa-copy"></i> Copy';
390
+ copyBtn.style.cssText = `
391
+ position: absolute;
392
+ top: 10px;
393
+ right: 10px;
394
+ padding: 0.3rem 0.6rem;
395
+ background: var(--primary);
396
+ color: white;
397
+ border: none;
398
+ border-radius: 3px;
399
+ cursor: pointer;
400
+ font-size: 0.8rem;
401
+ `;
402
+
403
+ copyBtn.addEventListener('click', () => {
404
+ navigator.clipboard.writeText(block.textContent)
405
+ .then(() => {
406
+ copyBtn.innerHTML = '<i class="fas fa-check"></i> Copied!';
407
+ setTimeout(() => {
408
+ copyBtn.innerHTML = '<i class="far fa-copy"></i> Copy';
409
+ }, 2000);
410
+ });
411
+ });
412
+
413
+ block.style.position = 'relative';
414
+ block.appendChild(copyBtn);
415
+ });
416
+
417
+ // Add smooth scrolling for anchor links
418
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
419
+ anchor.addEventListener('click', function (e) {
420
+ e.preventDefault();
421
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
422
+ behavior: 'smooth'
423
+ });
424
+ });
425
+ });
426
+ });
427
+ </script>
428
+ </body>
429
+ </html>