基本的に3つの異なるタイプのコンテンツでnginxサーバーをセットアップしようとしています:
- CodeIgniter で実行されているメイン Web サイト
- サブフォルダー内の Q&A フォーラム
/qa
(Question2Answer で実行) - 静的ファイル (を含むさまざまな場所にあります
/qa
)
さまざまなトラブルに見舞われています。私の現在の構成(サーバーブロック内)は次のとおりです。
# Q2A
if ($request_uri ~* "^/qa/") {
rewrite ^/qa/(.*)$ /qa/index.php?qa-rewrite=$1 last;
}
# CI
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?$1 last;
}
location / {
index index.php index.html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_cache one;
fastcgi_cache_key $scheme$host$request_uri;
fastcgi_cache_valid 200 302 304 5m;
fastcgi_cache_valid 301 1h;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/site$fastcgi_script_name;
fastcgi_param HTTPS off;
}
これは、次の問題を除いてほとんど機能しています。
- アプリケーション フォルダー内の PHP ファイルに対する要求が解析/実行されています。明らかに、これは CI アプリを経由しないため、エラーが発生します (変数が見つからないなど)。
- フォルダー内のすべての静的ファイル
qa
は、静的ファイルとして提供されるのではなく、Q2A アプリに渡されます。
location ~* ^/qa/ {}
ロケーションブロックのようなものを使用したり、さまざまな順列を使用したりするなど、数え切れないほど多くのことを試しましたtry_files
が、運がありませんでした。また、nginx サイトでこの Wordpress の例を修正してみました。それらのほとんどは/qa/
、404 を返すだけで終わりました。一部のメソッドでは、サーバーが生の PHP コードを提供する結果になりました。
これを設定するための適切な方法を手伝ってくれる人はいますか?