使用nginx + wordpress与子目录中的所有wordpress文件

我的设置
我在Debian Lenny上运行nginx 0.7.67作为web服务器,而不是作为反向代理。 我正在使用php5-fpm来处理我的PHP请求,这工作正常。

我的目标
我想有一个WordPress安装,这里介绍的清洁WordPress的颠覆安装 。 我想有一个干净的WordPress安装,而不用我的服务器根目录与所有的WordPress文件。
这意味着我的WordPress的安装将在/wordpress和我的主题和插件内/wordpress-content

但重要的是,如果您导航到我的域www.example.com,那么您将直接进入WordPress博客,而不必指定WordPress所在的子目录。

我发现了一个在nginx网站上安装wordpress的方法,但不幸的是,这是为了移动整个WordPress目录,而不是将stream量redirect到它。

我尝试了以下configuration:
example.conf中的site-available

 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行,至lessWordPress安装在/ wordpress里面工作。

我需要帮助如何debugging这种行为或在哪里我可以find更多的信息。

更新:添加了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" 

更新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/*; } 

你只是缺乏索引指令

 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; } 

为什么不使用这里的步骤: http : //codex.wordpress.org/Giving_WordPress_Its_Own_Directory然后让SVN只更新wordpress文件夹。 index.php在3年内没有改变,你可以检查Wordpress的trac,因为我不能链接到它,所以你可以按照SVN的步骤为所有其他的东西,如移动WordPress的内容,但移动index.php根和改变设置它作为我链接的代码也说。 在index.php得到更新的罕见机会,它只有一个文件,你将手动需要复制为根。

我可以在我的nginx服务器上设置自己的目录下的Wordpress,没有任何问题,也没有调整我的.conf文件。