在nginx中提供来自不同位置的php文件

问题描述 投票:14回答:3

我的主网站和wordpress在我的服务器上的不同目录中使用nginx作为Web服务器。主要网站位于/ home / me / www,Wordpress位于/ home / me / wordpress。出于特殊原因,我需要以这种方式将它们放在单独的目录中。如何在nginx配置文件中指定它?我目前有以下内容,但它不起作用:

location / {
    root   /home/me/www;
    index  index.php index.html index.htm;
}

location /blog {
    root /home/me/wordpress;
    index index.php index.html index.htm;
}

location ~ \.php$ {
    set $php_root /home/me/www;
    if ($request_uri ~ /blog) {
        set $php_root /home/me/wordpress;
    }
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}

当我尝试访问http://mydomain/blog时,它当前返回HTTP 404

php configuration nginx
3个回答
12
投票

看看this questionNginx Manual

尝试将您的blog线更改为:

location ^~ /blog/ {
    root /home/me/wordpress;
    index index.php index.html index.htm;
}

2
投票

我现在挣扎了几个小时,最后达到了以下工作配置:

location /php-app {
    passenger_enabled off;
    alias /path/to/php-app/$1;
    index index.php index.html;
    try_files $uri $uri/ @rewrite;
}

location @rewrite {
    rewrite ^/php-app(.*)$ /index.php?q=$1 last;
}

location ~ \.php$ {
    alias /path/to/php-app/$1;
    rewrite ^/php-app(.*)$ $1 last;
    passenger_enabled off;
    fastcgi_pass unix:/tmp/php-fpm.socket;
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /path/to/php-app$fastcgi_script_name;
    fastcgi_intercept_errors on;
}

0
投票

只需在@Nick Presta中添加更多细节即可。

^〜:如果存在carat和tilde修饰符,并且如果选择此块作为最佳非正则表达式匹配,则不会发生正则表达式匹配。

结帐这些差异enter link description here

© www.soinside.com 2019 - 2024. All rights reserved.