nginx
laravel

Laravel@nginxをシンボリックリンク貼りつつサブディレクトリで動かす

環境等

試したのはLaravel5.6、nginx1.12
(CentOS7,PHP7.2)

サブディレクトリで動かすのには、多分以下の感じで書けば動くっぽいが、いっぱい書きたくないなー、もっとスマートに書けないのか?というさぼりの気持ちで。
https://qiita.com/saba1024/items/2d50fb8284d699924360

ディレクトリ構成

メインの処理は/var/www/htmlに置くけど、piyo以下を/home/moge/piyopiyoにあるlaravelを使いたいという場合

/var/www/html/
  ├index.html
  ├hoge/
  ├fuga/
  │  └index.html
  └piyo -> /home/moge/piyopiyo/public(シンボリックリンク)

/home/moge/piyopiyo/
  ├public
  │  └index.php
  ├app
  ├config
  ....

index.phpから__DIR__とかで上位ディレクトリのファイルを参照しますが、本来の/home/moge/piyopiyo/の方に基づいたパスで動きます。

nginxのconfを修正

/etc/nginx/conf.d/XXXX.confに記載
追加部分は以下

        location /piyo/ {
            try_files /piyo/$uri /piyo/$uri/ /piyo/index.php?q=$uri&$args;
        }

全体だとこんな感じ

server {
        listen  80;

        server_name miyawa-tarou.com
        root   /var/www/html;
        index  index.html index.php;

        access_log  /var/log/nginx/access.log main;
        error_log   /var/log/nginx/error.log;

        location /piyo/ {
            try_files /piyo/$uri /piyo/$uri/ /piyo/index.php?q=$uri&$args;
        }

        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php-fpm/www.sock;
            include     fastcgi_params;
            fastcgi_index   index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
}