[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CXBMH2Z7JSCXWMHART23ZE":3,"skill-same:01M6CXBMH2Z7JSCXWMHART23ZE":51},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":31,"commitSha":32,"skillDirectory":5,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":36,"install":37,"resources":50},"01M6CXBMH2Z7JSCXWMHART23ZE","nginx",null,"Nginx web server, reverse proxy, and load balancer configuration","ffsshhttiikk\u002Fopencode-agents-skills","ffsshhttiikk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F226346827?v=4","01M6CWD9RR3Y7VRQX3MXYC8FYH","01M6CWD9WVPYAZW0J82G1VKGHY",3,"MIT","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fnginx\u002FSKILL.md",[],[5,18,19,20,21,22,23],"web","proxy","server","devops","opencode","configuration","2026-11-10 10:12:30",false,"---\nname: nginx\ndescription: Nginx web server, reverse proxy, and load balancer configuration\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: devops\n  category: web-servers\n---\n## What I do\n- Configure Nginx as web server\n- Set up reverse proxies\n- Implement load balancing\n- Configure SSL\u002FTLS\n- Set up caching\n- Handle rate limiting\n- Configure gzip compression\n\n## When to use me\nWhen deploying web applications or setting up API gateways.\n\n## Basic Configuration\n```nginx\nserver {\n    listen 80;\n    server_name example.com www.example.com;\n\n    root \u002Fvar\u002Fwww\u002Fhtml;\n    index index.html index.htm;\n\n    location \u002F {\n        try_files $uri $uri\u002F =404;\n    }\n\n    location \u002Fapi {\n        proxy_pass http:\u002F\u002Flocalhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n}\n```\n\n## SSL\u002FTLS\n```nginx\nserver {\n    listen 443 ssl http2;\n    server_name example.com;\n\n    ssl_certificate \u002Fetc\u002Fssl\u002Fcerts\u002Fexample.crt;\n    ssl_certificate_key \u002Fetc\u002Fssl\u002Fprivate\u002Fexample.key;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers HIGH:!aNULL:!MD5;\n    ssl_prefer_server_ciphers on;\n\n    # SSL session caching\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n}\n```\n\n## Load Balancing\n```nginx\nupstream backend {\n    least_conn;  # or ip_hash, hash $request_uri\n    \n    server backend1.example.com:8080 weight=3;\n    server backend2.example.com:8080;\n    server backend3.example.com:8080 backup;\n}\n\nserver {\n    location \u002F {\n        proxy_pass http:\u002F\u002Fbackend;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n}\n```\n\n## Caching\n```nginx\nproxy_cache_path \u002Fvar\u002Fcache\u002Fnginx levels=1:2 \n    keys_zone=api_cache:10m \n    max_size=1g \n    inactive=60m;\n\nserver {\n    location \u002Fapi {\n        proxy_cache api_cache;\n        proxy_cache_valid 200 60m;\n        proxy_cache_key \"$scheme$request_method$host$request_uri\";\n        add_header X-Cache-Status $upstream_cache_status;\n        \n        proxy_pass http:\u002F\u002Fbackend;\n    }\n}\n```\n\n## Rate Limiting\n```nginx\nhttp {\n    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r\u002Fs;\n    limit_req_zone $binary_remote_addr zone=login_limit:10m rate=1r\u002Fs;\n\n    server {\n        location \u002Fapi {\n            limit_req zone=api_limit burst=20 nodelay;\n            proxy_pass http:\u002F\u002Fbackend;\n        }\n        \n        location \u002Flogin {\n            limit_req zone=login_limit burst=5 nodelay;\n            proxy_pass http:\u002F\u002Fbackend;\n        }\n    }\n}\n```\n\n## Gzip Compression\n```nginx\ngzip on;\ngzip_vary on;\ngzip_min_length 1024;\ngzip_types text\u002Fplain text\u002Fcss application\u002Fjson application\u002Fjavascript \n    text\u002Fxml application\u002Fxml application\u002Fxml+rss text\u002Fjavascript;\ngzip_proxied any;\n```\n\n## Static Files\n```nginx\nserver {\n    location \u002Fstatic {\n        alias \u002Fvar\u002Fwww\u002Fstatic;\n        expires 30d;\n        add_header Cache-Control \"public, immutable\";\n    }\n    \n    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {\n        expires 1y;\n        add_header Cache-Control \"public\";\n    }\n}\n```\n","## What I do\n- Configure Nginx as web server\n- Set up reverse proxies\n- Implement load balancing\n- Configure SSL\u002FTLS\n- Set up caching\n- Handle rate limiting\n- Configure gzip compression\n\n## When to use me\nWhen deploying web applications or setting up API gateways.\n\n## Basic Configuration\n```nginx\nserver {\n    listen 80;\n    server_name example.com www.example.com;\n\n    root \u002Fvar\u002Fwww\u002Fhtml;\n    index index.html index.htm;\n\n    location \u002F {\n        try_files $uri $uri\u002F =404;\n    }\n\n    location \u002Fapi {\n        proxy_pass http:\u002F\u002Flocalhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n}\n```\n\n## SSL\u002FTLS\n```nginx\nserver {\n    listen 443 ssl http2;\n    server_name example.com;\n\n    ssl_certificate \u002Fetc\u002Fssl\u002Fcerts\u002Fexample.crt;\n    ssl_certificate_key \u002Fetc\u002Fssl\u002Fprivate\u002Fexample.key;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers HIGH:!aNULL:!MD5;\n    ssl_prefer_server_ciphers on;\n\n    # SSL session caching\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n}\n```\n\n## Load Balancing\n```nginx\nupstream backend {\n    least_conn;  # or ip_hash, hash $request_uri\n    \n    server backend1.example.com:8080 weight=3;\n    server backend2.example.com:8080;\n    server backend3.example.com:8080 backup;\n}\n\nserver {\n    location \u002F {\n        proxy_pass http:\u002F\u002Fbackend;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n}\n```\n\n## Caching\n```nginx\nproxy_cache_path \u002Fvar\u002Fcache\u002Fnginx levels=1:2 \n    keys_zone=api_cache:10m \n    max_size=1g \n    inactive=60m;\n\nserver {\n    location \u002Fapi {\n        proxy_cache api_cache;\n        proxy_cache_valid 200 60m;\n        proxy_cache_key \"$scheme$request_method$host$request_uri\";\n        add_header X-Cache-Status $upstream_cache_status;\n        \n        proxy_pass http:\u002F\u002Fbackend;\n    }\n}\n```\n\n## Rate Limiting\n```nginx\nhttp {\n    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r\u002Fs;\n    limit_req_zone $binary_remote_addr zone=login_limit:10m rate=1r\u002Fs;\n\n    server {\n        location \u002Fapi {\n            limit_req zone=api_limit burst=20 nodelay;\n            proxy_pass http:\u002F\u002Fbackend;\n        }\n        \n        location \u002Flogin {\n            limit_req zone=login_limit burst=5 nodelay;\n            proxy_pass http:\u002F\u002Fbackend;\n        }\n    }\n}\n```\n\n## Gzip Compression\n```nginx\ngzip on;\ngzip_vary on;\ngzip_min_length 1024;\ngzip_types text\u002Fplain text\u002Fcss application\u002Fjson application\u002Fjavascript \n    text\u002Fxml application\u002Fxml application\u002Fxml+rss text\u002Fjavascript;\ngzip_proxied any;\n```\n\n## Static Files\n```nginx\nserver {\n    location \u002Fstatic {\n        alias \u002Fvar\u002Fwww\u002Fstatic;\n        expires 30d;\n        add_header Cache-Control \"public, immutable\";\n    }\n    \n    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {\n        expires 1y;\n        add_header Cache-Control \"public\";\n    }\n}\n```\n",{"name":5,"license":14,"metadata":29,"description":7,"compatibility":22},{"audience":21,"category":30},"web-servers","main","5f7a3e453c98261f93d19a6a7de44ad8f7b72d41",2,"https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk","2026-03-01 06:55:40",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill nginx",{"tool":43,"command":44},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill nginx",{"tool":46,"command":47},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill nginx","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fnginx\u002FSKILL.md",true,[],[52,63,73,82,92,101],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":24},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[54,59,60,61,22,62],"platform","cross-platform","mobile","development",{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":24},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[65,70,22,71,72],"data wrangling","science","data",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":24},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[75,80,22,81],"system","scripting",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":24},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[89,90,22,91,72],"wide column","databases","model",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":24},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[99,90,22,100],"wide column stores","database",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":24},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[103,108,109,110,22,111,112],"websocket","real-time","time","best practices","implementation"]