我想设置一个WordPress博客,但不是一个典型的configuration:
主要网站在www.example.com 。 截至目前,它只是一个静态index.html文件与图像,我们将使用可能是一个index.php显示一些信息和访问该网站的高级部分
博客 ,与WordPress,在www.example.com/blog
我在Nginx下设置了它,但是虽然我能够在www.example.com和我的博客www.example.com/blog上看到我的静态主页,但是我无法访问WordPress的pipe理面板,所以我无法login或写新帖。
这是/etc/nginx/sites-enabled/www.example.comconfiguration文件:
server { server_name www.example.com; rewrite ^(.*) http://example.com$1 permanent; } server { listen 80; server_name example.com; access_log /var/www/www.example.com/log/access.log; error_log /var/www/www.example.com/log/error.log info; index index.php; location / { set $php_root /var/www/www.example.com; try_files $uri $uri/ /index.php?q=$uri&$args; } location /blog { set $php_root /var/www/www.example.com; try_files $uri $uri/ /blog/index.php?q=$uri&$args; } ## Images and static content is treated differently location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|\ rtf|js)$ { access_log off; expires 30d; root /var/www/www.example.com; } location ~* \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass backend; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; include fastcgi_params; 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_intercept_errors on; fastcgi_ignore_client_abort on; fastcgi_read_timeout 180; } ## Disable viewing .htaccess & .htpassword location ~ /\.ht { deny all; } } upstream backend { server 127.0.0.1:9000; }
我必须做什么才能访问pipe理面板? 我想这是与PHP的位置有关,但现在确定要触摸什么
这对任何PHP都不适用。 你在一个位置设置一个variables,然后在另一个位置使用它,这在Nginx中不起作用。 范围只向下继续,而不是向上或跨越,所以http – >服务器 – >位置,从来没有位置 – >位置。
除此之外,不需要为PHP根实际使用自定义variables,只需使用正常的root指令(在服务器上下文中)指定root,然后使用内置variables$ document_root作为SCRIPT_FILENAME fastcgi参数。
要修复此configuration,请在server块中设置一个root指令:
root /var/www/www.example.com;
然后使用fastcgi_param的$document_root :
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
set $php_root调用可以被删除。 正如@MartinFjordvald指出的,反正他们什么都不做。