nginxで静的ファイルにアクセスするとstatus 403や exist or is not executable by this process.になる件

nginxでホームページを/var/www配下ではなく、/home/kumacchi/public_htmlなどのユーザーディレクトリ配下で管理しようとすると、htmlやcssなどの静的ファイルにアクセスすると、cssの場合403になったり、htmlの場合は

exist or is not executable by this process.

になってハマった。

解決策は403と拒否されているのだからその通りでパーミッションの変更で解決する。

が、/home/kumacchiの場合

chmod 705 /home/kumacchi

と大元を700から705にしてあげないといけなかった。とりあえずはまあ動けばいいのでこれでいいが

今度はcgiが動かなくなった。

location / {
    try_files $uri $uri/ @webapp;
}

location ~ \.cgi$ {
    gzip off;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass 127.0.0.1:8999;
    fastcgi_index example.cgi;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location @webapp {
    gzip off;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass 127.0.0.1:8999;
    fastcgi_index example.cgi;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

.cgiの定義を追加したら動いた。

今までは、パーミッションの関係で静的ファイルの.cgiにアクセスできなかったので、 @webappの方にかかって偶然動いてたが、パーミッションの変更によってファイルにアクセス出来るようになり静的ファイルの方に引っかかるようになって静的ファイルとして表示されるようになったため実行できなくなっていたというオチだった。

 

このブログが有るサーバーも最近結構重いのでそのうち引っ越して今はapacheで動いているこのブログをnginxで動かしたいと思っている。

タグ :