UPD !!! :ここで説明する問題は、このトピックによって完全に解決されます。
http://groups.drupal.org/node/155564
そして、以下の詳細な調査によって:
Nginx&Drupalの第一人者によるNginx構成-AntónioPPAlmeida(ペルシオ)。
https://github.com/perusio/drupal-with-nginx
次の問題を解決できません:ApacheモジュールとしてFreeBSD、Apache 2.2、PHP(FastCGIなし!)、nginx0.8.5.4があります。
Boostとimage_cacheが有効になっているDrupalポータルをパーソナルVPSサーバーに移動しようとしています。
私の目標は、nginxでclean_urlを書き換え、boostとimage_cacheのルールを修正することです。
助けてください!現在のnginx構成に何か問題があることを知っています。一日がカットされました。
これがnginx.confです(/ routeのみが機能するようになりました):
ユーザーwwwwww; worker_processes 1; イベント{ worker_connections 1024; } http { mime.typesを含める; default_type application / octet-stream; log_format main'$ remote_addr-$ remote_user [$ time_local] "$ request"' '$ status $ body_bytes_sent "$ http_referer"' '"$ http_user_agent" "$ http_x_forwarded_for"'; access_log /var/log/nginx-access.log main; reset_timedout_connection on; sendfile on; aio sendfile; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzipをオンにします。 アップストリームバックエンド{ #Apacheサーバー サーバー77.72.19.19:81; } サーバー{ リッスン77.72.19.19:80デフォルトaccept_filter=httpready; server_name 77.72.19.19; proxy_set_header Host $ host; proxy_set_header X-Real-IP $ remote_addr; proxy_set_headerX-転送-$remote_addrの場合; gzipをオンにします。 gzip_static on; gzip_proxied any; gzip_types text / plain text / html text / css application / json application / x-javascript text / xml application / xml application / xml + rss text / javascript; $ myroot / usr / local / www / apache22 / data/alfaを設定します。 ルート$myroot; 場所〜^\。{{ すべてを拒否します。 } $boost""を設定します; $boost_query"_"を設定します; if($ request_method = GET){ $boostGを設定します。 } if($ http_cookie!〜 "DRUPAL_UID"){ $ boost "${boost}D"を設定します; } if($ query_string = ""){ $ boost "${boost}Q"を設定します; } if(-f $ myroot / cache / normal / $ http_host $ request_uri $ boost_query $ query_string.html){ $ boost "${boost}F"を設定します; } if($ boost = GDQF){ ^。*$/cache/normal/$http_host/$request_uri$boost_query$query_string.htmlbreak;を書き換えます。 } if(-f $ myroot / cache / perm / $ http_host $ request_uri $ boost_query $ query_string.css){ $ boost "${boost}F"を設定します; } if($ boost = GDQF){ ^。*$/cache/perm/$http_host/$request_uri$boost_query$query_string.cssbreak;を書き換えます。 } if(-f $ myroot / cache / perm / $ http_host $ request_uri $ boost_query $ query_string.js){ $ boost "${boost}F"を設定します; } if($ boost = GDQF){ ^。*$/cache/perm/$http_host/$request_uri$boost_query$query_string.jsbreak;を書き換えます。 } 場所〜^ / sites /.*/ files / imagecache / { #try_files $ uri @rewrite; error_page 404 = /; } 場所〜* \。(txt | jpg | jpeg | css | js | gif | png | bmp | flv | pdf | ps | doc | mp3 | wmv | wma | wav | ogg | mpg | mpeg | mpg4 | htm | zip | bz2 | rar | xls | docx | avi | djvu | mp4 | rtf | ico)$ {{ 最大有効期限が切れます。 add_header Vary Accept-Encoding; if(-f $ request_filename){ 壊す; } if(!-f $ request_filename){ proxy_pass "http:// backend"; 壊す; } } 場所〜* \。(html(.gz)?| xml)$ { add_header Cache-no-cache、no-store、must-validateを制御します。 ルート$myroot; if(-f $ request_filename){ 壊す; } if(!-f $ request_filename){ proxy_pass "http:// backend"; 壊す; } } if(!-e $ request_filename){ 最後に^/(。*)$/index.php?q=$1を書き換えます。 壊す; } 位置 / { proxy_pass http:// backend; } } }
UPD:このnginx.confで私は/を使っています。そして、他のページは私に「ページは正しくリダイレクトされていません」と表示します。ロケーションルールが評価される順序を誰が説明できますか?そしてそれが「ブレーク」である場合-nginxがこの行に出会うと、次に何をしますか。私は実際に約20のnginx構成サンプルを試しました。もう1つのリンクは必要ありません。nginx.confで何が起こっているのかを本当に理解している誰かの回答をお勧めします。
UPD2:交換した場合
if(!-e $ request_filename){ 最後に^/(。*)$/index.php?q=$1を書き換えます。 壊す; }
と:
try_files $ uri $ uri / @drupal; 場所@drupal{ ^/index.php?q=$uriを最後に書き直します。#Drupal6の場合 }
次に、ルート以外のすべてのページで404「要求されたURLがこのサーバーで見つかりませんでした」と表示されます。