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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在nginx中提供来自不同位置的php文件相关的知识,希望对你有一定的参考价值。

我的主网站和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

答案

看看this questionNginx Manual

尝试将您的blog线更改为:

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

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

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;
}
另一答案

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

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

结帐这些差异enter link description here

以上是关于在nginx中提供来自不同位置的php文件的主要内容,如果未能解决你的问题,请参考以下文章

Nginx不同的根位置

特定位置的 nginx 重写规则

如何在NGINX中路由静态文件和不同的应用程序?

Nginx-proxy docker 接收来自 php-fpm docker 的 stderr 输出(导致 502 错误)

Nginx配置文件详细介绍

来自移动设备的 PHP 地理定位,无需重定向