Mosink墨溟

博客 工具

一台小服务器上的 nginx:主页、博客与论坛

这个站现在是这样的:主页是纯静态页面,博客是 Typecho,论坛是 Flarum,全部跑在一台 2 核 2 GB 的云服务器上,前面只有一个 nginx。

一个 server,三个 location

server {
    server_name mosink.top www.mosink.top;

    location / {
        root /var/www/personal;
        index index.html;
        error_page 404 /404.html;
    }

    location /blog {
        alias /var/www/typecho;
        index index.php;
        try_files $uri $uri/ /blog/index.php?$args;
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_param SCRIPT_FILENAME $request_filename;
        }
    }

    location /forum {
        alias /var/www/flarum/public;
        try_files $uri $uri/ @flarum;
    }
}

alias 的坑

alias 和 root 的区别是:alias 会把 location 匹配到的前缀替换掉,而 root 是拼接。所以在 alias 下面嵌套 PHP 的 location 时,SCRIPT_FILENAME 要用 $request_filename,不能用 $document_root$fastcgi_script_name。

PHP-FPM

博客和论坛共用一个 PHP-FPM 池:

pm = ondemand
pm.max_children = 8
pm.process_idle_timeout = 30s

平时内存占用六百多兆,访问量一高也不会爆。

证书

证书用 certbot 申请,/.well-known/acme-challenge/ 必须在 80 端口单独放行,写在跳转 HTTPS 之前:

location ^~ /.well-known/acme-challenge/ {
    root /var/www/personal;
}

静态资源缓存

主页的字体和脚本都带版本号,可以放心地缓存 30 天:

location /assets/ {
    root /var/www/personal;
    expires 30d;
}

评论 · Comments0

写下评论

Ctrl + Enter 也可以发表