gpt4 book ai didi

php - 同一服务器中 Rails 应用程序子目录中 Wordpress 的 nginx 配置

转载 作者:行者123 更新时间:2023-12-01 13:34:54 26 4
gpt4 key购买 nike

当我尝试访问 example.com/blog 和 /var/log/nginx/error.log 时,我不断收到“找不到文件”错误:

FastCGI sent in stderr: "Primary script unknown" while reading 
response header from upstream

这是我的 nginx 配置:

upstream example {
server unix:/home/deployer/example/shared/tmp/sockets/puma.sock fail_timeout=0;
}

server {
listen 80;
server_name example.com;

client_max_body_size 4G;
keepalive_timeout 10;

error_page 500 502 503 504 /500;

root /home/deployer/example/current/public;

try_files $uri/index.html $uri.html $uri @example;

location @example {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

proxy_pass http://example;
}

location /blog {
root /var/www/example_blog;
index index.php;

if (!-e $request_filename) {
rewrite ^(.*)$ /blog/index.php?q=$1 last;
}

location ~ .php(?|$) {
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}

location = /50x.html {
root html;
}

location = /404.html {
root html;
}

location @503 {
error_page 405 = /system/maintenance.html;
if (-f $document_root/system/maintenance.html) {
rewrite ^(.*)$ /system/maintenance.html break;
}
rewrite ^(.*)$ /503.html break;
}

if ($request_method !~ ^(GET|HEAD|PUT|PATCH|POST|DELETE|OPTIONS)$ ){
return 405;
}

if (-f $document_root/system/maintenance.html) {
return 503;
}
}

server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}

server {
listen 80;
server_name assets.example.com;

client_max_body_size 4G;
keepalive_timeout 10;

root /home/deployer/example/current/public;

location = /404.html {
root html;
}

if ($request_method !~ ^(GET|HEAD|PUT|PATCH|POST|DELETE|OPTIONS)$ ){
return 405;
}

if (-f $document_root/system/maintenance.html) {
return 503;
}
}

PHP-FPM和nginx的进程:

$ ps aux | grep nginx
root 31590 0.0 0.0 32420 948 ? Ss 16:27 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 31593 0.0 0.1 32868 3596 ? S 16:27 0:00 nginx: worker process
deployer 32052 0.0 0.0 14224 936 pts/0 S+ 16:33 0:00 grep --color=auto nginx
$ ps aux | grep php
root 31656 0.0 1.4 356016 29892 ? Ss 16:27 0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
www-data 31659 0.0 0.2 356016 5880 ? S 16:27 0:00 php-fpm: pool www
www-data 31660 0.0 0.4 356344 8424 ? S 16:27 0:00 php-fpm: pool www
deployer 32059 0.0 0.0 14224 956 pts/0 S+ 16:33 0:00 grep --color=auto php

wordpress 目录的权限:

drwxrwsr-x  5 www-data www-data  4096 Jun  1 00:13 example_blog/

Wordpress 中文件的权限:

drwxrwsr-x  5 www-data www-data  4096 Jun  1 00:13 ./
drwxr-xr-x 10 deployer deployer 4096 Jun 1 16:32 ../
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Jan 3 02:51 license.txt
-rw-r--r-- 1 www-data www-data 7433 Jan 12 01:46 readme.html
-rw-r--r-- 1 www-data www-data 5447 Sep 28 2016 wp-activate.php
drwxr-sr-x 9 www-data www-data 4096 May 17 05:50 wp-admin/
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1627 Aug 29 2016 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 3136 Jun 1 00:13 wp-config.php
-rw-r--r-- 1 www-data www-data 2853 Dec 16 2015 wp-config-sample.php
drwxrwsr-x 5 www-data www-data 4096 Jun 1 00:05 wp-content/
-rw-r--r-- 1 www-data www-data 3286 May 25 2015 wp-cron.php
drwxr-sr-x 18 www-data www-data 12288 May 17 05:50 wp-includes/
-rw-r--r-- 1 www-data www-data 2422 Nov 21 2016 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3301 Oct 25 2016 wp-load.php
-rw-r--r-- 1 www-data www-data 33939 Nov 21 2016 wp-login.php
-rw-r--r-- 1 www-data www-data 8048 Jan 11 13:15 wp-mail.php
-rw-r--r-- 1 www-data www-data 16255 Apr 7 02:23 wp-settings.php
-rw-r--r-- 1 www-data www-data 29896 Oct 19 2016 wp-signup.php
-rw-r--r-- 1 www-data www-data 4513 Oct 15 2016 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3065 Sep 1 2016 xmlrpc.php

/etc/php/7.0/fpm/pool.d/www.conf 中:

user = www-data
group = www-data

listen.owner = nginx
listen.group = nginx
;listen.mode = 0660

一直在谷歌搜索并尝试了各种方法,但仍然无法通过此错误。

最佳答案

问题是 location/blog { root/var/www/example_blog; ... 将文件放在 /var/www/example_blog/blog/ 中。

root 仅适用于文件路径由 $document_root 与 URI 拼接而成的情况。否则您需要重写 URI 或使用 alias 指令。参见 this document了解详情。

alias 指令可以这样实现:

location = /blog { rewrite ^ /blog/ last; }

location ^~ /blog/ {
alias /var/www/example_blog/;
index index.php;

if (!-e $request_filename) {
rewrite ^(.*)$ /blog/index.php?q=$1 last;
}

location ~ \.php$ {
if (!-f $request_filename) { return 404; }

include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}

使用 ^~ 修饰符来避免与同一级别的其他正则表达式位置 block 产生任何歧义。参见 this document了解详情。

为避免 /blogx 等 URI 出现问题,请在 locationalias /。并添加一个完全匹配的location来处理/blog

关于php - 同一服务器中 Rails 应用程序子目录中 Wordpress 的 nginx 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44302541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com