GTX690战术核显卡导弹 - Nginx
type: channel
link: https://www.nekopara.uk/tag/Nginx/
items: 主题开发日志03：在Manjaro上搭建Nginx+PHP环境
items: 个人博客低成本CC防护：抵御85%+常见CC攻击
items: 优化Nginx+PHP+MariaDB并发访问占用问题
items: 配置Nginx反向代理Stable Diffusion并且加入身份验证

主题开发日志03：在Manjaro上搭建Nginx+PHP环境
type: item
date: 2026-01-26T13:38:10+08:00
description: 在Manjaro Linux上部署Typecho开发环境因为后面主题的开发就需要实时修改php文件查看效果了，为了方便开发，我决定在自己的电脑上面设置一个基本的Nginx+PHP环境。对于数据库就使用sqlite好了，只是为了搭建一个本地的typecho作为测试平台。在配置期间踩了几个坑，记录一下。软件的安装非常简单，一条命令梭哈：pacman -S nginx php php-fpm php-sqlite php-gd配置软件因为manjaro和其他发行版不太一样，并且我需要这个web服务器以我的用户权限进行运行，方便我更新文件，所以我们需要做出一些更改。php.ini首先是php的配置文件，文件位于/etc/php/php.ini找到下面的部分进修改：上传大小限制：upload_max_filesize = 2M改为upload_max_filesize = 16M然后启用必要的模块，找到以下部分取消注释：extension=curl extension=gd extension=gettext extension=pdo_sqlitewww.conf然后是php的另一个配置文件，让php-fpm以用户身份运行，文件位于/etc/php/php-fpm.d/www.conf找到下面的部分进修改：user = chocola ; <--- 修改这里 group = chocola ; <--- 修改这里 listen.owner = chocola ; <--- 修改这里，确保 Nginx 能和 PHP 通讯 listen.group = chocola ; <--- 修改这里nginx.conf将Nginx的配置文件修改为如下所示： user chocola; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; # Load all installed modules include modules.d/*.conf; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root /run/media/chocola/DATA/wwwroot; index index.php index.html index.htm; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .*\.php(\/.*)*$ { # 你的网站根目录 (如果 server 块里已经写了 root，这行可以省略，但加上保险) root /run/media/chocola/DATA/wwwroot; fastcgi_pass unix:/run/ph…

个人博客低成本CC防护：抵御85%+常见CC攻击
type: item
date: 2025-11-02T16:47:03+08:00
description: 低成本CC防护：我的实战配置与效果喜报：被大规模CC了！平常的一天，突然受到了来自衣食父母华为云的服务器告警：虚拟机网络连接数突破15400个，CPU占用超过 85% 。就知道肯定是被CC了。果然网站被打是催更技术类博主最好的方式（雾不过我之前是设置过缓存的，有点好奇怎么绕过缓存，事后我抓取了对应时间的Nginx日志access.log：43.152.29.37 - - [30/Oct/2025:23:27:16 +0800] "GET /3bb6bfea9/90a2c9c9fc?limit=ef616a8b1b145df&token=176fe0f01f&utm_source=a5d4f247077b HTTP/1.0" 404 29335 "http://www.nekopara.uk/3bb6bfea9/90a2c9c9fc?limit=ef616a8b1b145df&token=176fe0f01f&utm_source=a5d4f247077b" "Mozilla/5.0 (Windows NT 11.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" "91.209.77.93, 43.152.29.37" 43.152.24.20 - - [30/Oct/2025:23:27:16 +0800] "GET /profile/config/delete?search=9844b7e151&version=504397e6490c&utm_campaign=bd5783ef290&page=4b9e8cc670d HTTP/1.0" 404 29335 "http://www.nekopara.uk/profile/config/delete?search=9844b7e151&version=504397e6490c&utm_campaign=bd5783ef290&page=4b9e8cc670d" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" "138.2.109.39, 43.152.24.20" 43.152.143.43 - - [30/Oct/2025:23:27:16 +0800] "GET /health/admin?utm_medium=eb37025 HTTP/1.0" 404 29335 "http://www.nekopara.uk/health/admin?utm_medium=eb37025" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" "163.61.245.58, 43.152.143.43" 43.174.55.12 - - [30/Oct/2025:23:27:16 +0800] "GET /5de3c/0727afb/info?type=f06d22885b8 HTTP/1.0" 404 29335 "http://www.nekopara.uk/5de3c/0727afb/info?type=f06d22885b8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15" "103.184.54.67, 43.174.55.12" 43.152.14.36 - - [30/Oct/2025:23:27:16 +0800] "GET /edit/a97b/cba81414/content.htm?offset=09cd68b44dd60&key=030f41284 HTTP/1.0" 404 29335 "http://www.nekopara.uk/edit/a97b/cba81414/content.htm?offset=09cd68b44dd60&key=030f41284" "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36" "49.145.113.40, 43.152.14.36" 43.152.…

优化Nginx+PHP+MariaDB并发访问占用问题
type: item
date: 2024-12-15T14:57:00+08:00
description: 优化网站访问并发高占用问题也是成功让CPU占用从100%降低到了10%。前言之前尝试过高并发压力测试自己的网站，发现打到128并发基本上就趴窝了。后面与友链的一个站长交流，得知可以通过缓存的方式解决这种高并发处理问题。因为如果不设置缓存的话，即使是同样的请求，也会让php进行反复处理，消耗大量资源。所以，我想尝试一下能不能改善一下这个情况。实验环境准备为了保证我网站能在我进行实验期间正常运行，我决定对我网站数据进行克隆，迁移到我云服务器里面性能最孱弱的那个进行测试。那就是，白嫖的华为云：母鸡CPU: Intel(R) Xeon(R) Gold 6348 (2) @ 2.60 GHz双核CPU512MB内存20G硬盘然后是软件环境，操作系统为Alpine Linux 3.20然后我按照前面我那片迁移博客的方法，把博客迁移了过去。原始表现迁移过程就进行省略了，和前面的博客方法大体相同。我测试下来，32并发就是这玩意的极限了，CPU彻底吃满。再往上加线程已经没有意义了，因为已经寄了。可以看出来，云服务器相比于实体鸡性能差别还是很大的。优化改用Unix Socket进行PHP对接首先是php对接的问题，默认Alpine使用的是TCP网络协议进行本地回环，开销较大。而使用Unix Socket则可以解决这个问题，他具有低延迟和资源占用少的优点。特征TCP 端口Unix Socket通信范围支持远程通信仅限于同一主机内的进程间通信性能较高开销，适合长距离通信更高效，尤其在本地通信中表现出色安全性需要额外的安全措施，如防火墙规则依赖于操作系统权限控制，天然更安全配置复杂度需要设置IP地址和端口号只需指定文件路径为了实现这个目标，我们需要对PHP的配置文件和Nginx的配置文件进行更改。1. 修改 PHP-FPM 配置文件首先，我们需要编辑 PHP-FPM 的池配置文件 /etc/php82/php-fpm.d/www.conf，将其 listen 设置更改为一个 Unix socket，并设置适当的权限。[www] ; 更改 listen 为 Unix socket listen = /var/run/php-fpm82/php8.2-fpm.sock ; 设置 socket 文件的所有者和组 listen.owner = nginx listen.group = nginx listen.mode = 0660确保 /var/run/php-fpm82/ 目录存在并且有正确的权限：sudo mkdir -p /var/run/php-fpm82/ sudo chown root:nginx /var/run/php-fpm82/ sudo chmod 755 /var/run/php-fpm82/2. 更新 Nginx 配置文件然后，编辑你的 Nginx 站点配置文件，例如 /etc/nginx/http.d/nekopara.conf，将 fastcgi_pass 指令更新为指向新的 Unix socket：location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm82/php8.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }3. 重启服务保存所有更改后，重启 PHP-FPM 和 Nginx 服务以使新配置生效。# 重启 PHP-FPM rc-service php-fpm82 restart # 重新加载 Nginx rc-service nginx reload修改完成后，再进行测试，似乎没有太大改善，还是CPU爆炸。那就尝试一下设置缓存了。为Nginx配置缓存规则1. 定义 FastCGI 缓存区首先，在 Nginx 的主配置文件 /etc/nginx/nginx.conf 添加一个 fastcgi_cache_path 指令来定义缓存存储的位置和参数。http { # 其他配置... # 定义 FastCGI 缓存路径 fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=my_fastcgi_cache:16m inactive=60m; # 定义缓存键，通常包含请求方法、主机名和 URI fastcgi_cache_key "$scheme$request_method$host$request_uri"; }在主配置文件加上以上这段即可。确保 /var…

配置Nginx反向代理Stable Diffusion并且加入身份验证
type: item
date: 2024-11-07T15:54:00+08:00
description: 让Nginx反向代理Stable Diffusion并鉴权访问说在前面的话......我希望能在公网直接访问我的Stable Diffusion WebUI，虽然说可以直接通过端口隐射或者内网穿透的方式引出来，但是由于WebUI本身是不带身份验证的，万一被某些无聊的人乱搞就不好了。于是，我就想到用Nginx做反向代理，并且加入基本身份验证。也就是你打开网站的时候浏览器会弹出一个窗口要你填写身份信息进行认证。这样做的话，相对而言比较省事，不需要去增加功能和代码。所需软件/工具Stable Diffusion WebUIFRP内网穿透工具NginxHAproxy(如果有多个服务需要同时访问的话）Stable Diffusion配置允许外部访问在Stable Diffusion的目录找到webui-user.sh文件，取消注释export COMMANDLINE_ARGS=""，加上--listen。例如：export COMMANDLINE_ARGS="--xformers --enable-insecure-extension-access --listen"然后按照常规方式启动Stable Diffusion:./webui.sh配置FRP内网穿透下载FRP后，解压，frps是服务端，配置文件为frps.toml，frpc是客户端，配置文件为frpc.toml。服务端配置文件如下：bindPort = 7000 auth.token = "your_passwd"bindPort是服务器监听端口。auth.token是设置的连接密码。客户端配置文件如下：serverAddr = "172.16.0.1" serverPort = 7000 auth.token = "your_passwd" proxies name = "Stable_Diffusion" type = "tcp" localIP = "127.0.0.1" localPort = 7860 remotePort = 7860serverAddr是服务器的IP地址。serverPort是服务器设置的端口，需要和服务器保持一致。auth.token是自定义的密码，需要和服务器保持一致。localIP是要访问服务的本地IP。localPort是本地服务的端口。remotePort是把本地服务暴露出去在外面访问的端口。所有相关文件位于同一目录，设置好后，服务端运行frps:./frps -c ./frps.toml客户端运行frpc：./frpc -c ./frpc.toml注意，这一步可以防火墙放行相关端口看看是否成功，但是弄完之后一定要关掉这个端口！配置Nginx反向代理配置基础身份验证为了添加基础身份验证，需要生成一个密码文件。使用htpasswd工具来创建这个文件。如果没有安装htpasswd，可以通过安装 apache2-utils包来获得：apt install apache2-utils然后，创建一个密码文件，并添加一个用户：sudo htpasswd -c /etc/nginx/.htpasswd user配置Web服务器配置文件Web服务器配置文件内容如下：server { server_name yourdomain.example.com; listen 10086 ssl; listen [::]:10086 ssl; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/certkey.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Real-IP $remote_add…