latest log

酩酊状態で書いたエンジニアポエムです。酩酊状態で読んでください。

nginxがシンボリックリンクで403を返す

nginxが403を返す理由は様々です。

まずはこちらをざざっと参照し、気になるポイントがあったら試してみましょう:

www.1and1.com

僕は時々はシンボリックリンクを設定して403になってしまい頭を抱えてしまいます。数年に一回ぐらいのペースでやらかすので、毎回ググってるんですよね。

たとえば以下のように、your-project 以下に存在する assets ディレクトリを https://localhost/assets でアクセスできるようにしようとして、シンボリックリンクを設定すると403になったりします。

$ cd your-project
$ ln -s assets /usr/local/var/www/assets

この場合は nginx.conf に location /assets/ を追加すると良いでしょう。

  location /assets/ {
    root /usr/local/var/www/your-project/;
  }

蛇足になりますが、慣れていないと以下のように書いてしまいがちです。 このように設定すると nginx は https://localhost/assets へのアクセスを your-project/assets/assets/ として解決しようとします。 この試みは失敗し404が帰るでしょう。

# これはダメな例です
  location /assets/ {
    root /usr/local/var/www/your-project/assets/;
  }

こちらの記事も参考にしてください:

ja.stackoverflow.com