web-dev-qa-db-ja.com

nginx + wordpress with all wordpress files in asubdirectory

マイセットアップ
DebianLennyでnginx0.7.67をリバースプロキシとしてではなくWebサーバーとして実行しています。私はphp5-fpmを使用してPHP=リクエストを処理しますが、これは正常に機能します。

私の目的
ここで説明されているようにレイアウトされたWordPressインストール clean wordpress Subversionインストール 。サーバーのルートディレクトリをすべてのWordPressファイルで乱雑にすることなく、クリーンなWordPressインストールをしたいと思います。
つまり、私のwordpressインストールは/wordpressと私のテーマとプラグイン/wordpress-content

ただし、重要な点は、私のドメインwww.example.comに移動すると、WordPressのサブディレクトリを指定しなくても、WordPressブログに直接移動することです。 $ ===は生きています。

Nginxサイト installing wordpress でハウツーを見つけましたが、残念ながらこれは、トラフィックをリダイレクトするのではなく、WordPress=ディレクトリ全体を移動するためのものです。

私は次の構成で試しました:
example.confサイトで-利用可能

server {
  listen 80;
  server_name     www.example.com;
  access_log      /var/log/nginx/www.example.com.access.log main;
  root            /var/www/example/htdocs;

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


  include /etc/nginx/includes/php5-wordpress.conf;
  include /etc/nginx/includes/deny.conf;
}

php5-wordpress.confインクルード

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

location ~ \.php$ {
       fastcgi_split_path_info ^(/wordpress)(/.*)$;
       fastcgi_ignore_client_abort on;
       fastcgi_pass   unix:/var/run/php5-fpm.socket;
       fastcgi_index  index.php;
       include        /etc/nginx/fastcgi_params;
}

fastcgi_params

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

私が抱えている問題は、アドレス " http://www.example.com "にアクセスすると、ディレクトリリストを無効にしたときに403エラーが発生することです。代わりに、WordPressを表示したいのですが、 " http://www.example.com/wordpress "に移動すると、「ファイルが表示されません「見つかりました」エラー。ただし、php5-wordpress.confのfastcgi_split_path_info行をコメント化すると、少なくともWordPressインストールは/ wordpress内で動作します。

この動作をデバッグする方法、または詳細情報の入手先を教えてください。

更新:403エラーのエラーログエントリを追加しました。

error.logに、403エラーの次のエントリが表示されます。

2010/12/11 07:54:24 [error] 9496#0: *1 directory index of
"/var/www/example/htdocs/" is forbidden, client: XXX.XXX.XXX.XXX,
 server: www.example.com, request: "GET / HTTP/1.1", Host: "www.example.com"

Update 2:以下にnginx.confを追加しました:

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format   main '$remote_addr - $remote_user [$time_local]  $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;

    index index.php index.html;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
5
GorillaPatch

インデックスディレクティブ が不足しているだけです

server {
  listen 80;
  server_name     www.example.com;

  access_log      /var/log/nginx/www.example.com.access.log main;

  root            /var/www/example/htdocs;
  index           index.php;

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


  include /etc/nginx/includes/php5-wordpress.conf;
  include /etc/nginx/includes/deny.conf;
}
4

ここの手順を使用しないのはなぜですか: http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory そして、SVNでwordpressフォルダのみを更新します。index.phpはそうではありません。 Wordpress 3年で変更されました。リンクできないのでWordpress tracを確認できるので、すべてのSVNの手順に従うことができます。 move wordpress content outのような他のコンテンツですが、index.phpをルートに移動し、私がリンクしたcodexが言うように設定を変更してください。index.phpが更新されるのはまれな機会です。ルート用に手動で再度コピーする必要があるファイル。

Wordpressをnginxサーバー上の独自のディレクトリでセットアップできますが、問題はまったくなく、.confファイルを微調整する必要もありません。

0
Zuhaib