このサイトではFlaskも利用しているため、Gravは /pages 配下で動かすことにしました。Gravのインストーラを展開すると webserver-configs/nginx.conf として設定サンプルがありますが、サブフォルダで動かすための説明は3行しかありません。また、php関連の設定は環境にも依存することから、メモとして設定内容を残しておきます。

Environment

  • Ubuntu 22.04 LTS
  • nginx 1.18.0
  • PHP 8.1.2

nginx

server {
.. snip ..
  location /pages/ {
    root /foo/var;
    try_files $uri $uri/ /pages/index.php?$query_string;

    location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
    location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
    location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
    location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }

    location ~ \.php$ {
      fastcgi_pass  unix:/run/php/php8.1-fpm.sock;
      include snippets/fastcgi-php.conf;
    }
  }
.. snip ..
}