如何设置PHP从Nginx中的单个位置运行

时间:2012-07-08 20:09:23

标签: wordpress nginx php

我一直在努力解决这个问题。我想设置一个Wordpress博客,从服务器上的“/ blogname”路径而不是根目录运行。我还希望路径具有与Wordpress脚本不同的名称,因为服务器本身将运行django。

我有Nginx作为反向代理,我设置php-fpm来运行wordpress。这是我的Nginx配置文件:

http {
    include             mime.types;
    default_type        application/octet-stream;
    sendfile            on;
    keepalive_timeout   65;

    #tcp_nopush         on;
    #gzip               on;

    server {
        root         /Users/username/Dev/Wordpress/;
        index        index.php index.html index.htm;
        listen       8080;
        server_name  localhost;

        # Do not serve hidden files
        location ~ /\. {
            access_log      off; 
            log_not_found   off; 
            deny            all; 
        }

        # Static files
        location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        }

        # This is the problem
        location /blogname {
            try_files $uri $uri/ /index.php;
            rewrite  /blogname(.*) /blog$1 last;

            fastcgi_index index.php;
            fastcgi_pass  127.0.0.1:9000;
            include       fastcgi_params;
            fastcgi_param SCRIPT_FILENAME /Users/username/Dev/Wordpress/blog$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        }
    }
}

现在当我访问localhost:8080 / blogname时,我只需下载index.php脚本而不是执行它。

欢迎其他提示。

1 个答案:

答案 0 :(得分:0)

替换此

location /blogname {
  try_files $uri $uri/ /index.php;
  rewrite  /blogname(.*) /blog$1 last;
  fastcgi_index index.php;
  fastcgi_pass  127.0.0.1:9000;
  include       fastcgi_params;
  fastcgi_param SCRIPT_FILENAME /Users/username/Dev/Wordpress/blog$fastcgi_script_name;
  fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

用这个

location ~ \.php$ {
  try_files                 $uri =404;
  fastcgi_pass              127.0.0.1:9000;
  fastcgi_index             index.php;
  fastcgi_intercept_errors  on;
  fastcgi_split_path_info   ^(.+\.php)(/.*)$;
  include                   fastcgi.conf;
}

我希望这对您有用,因为这是我用于本地服务器的内容。