php - Nginx 和 php-fpm 仅适用于某些 php 页面。怎么了?

标签 php linux nginx

我正在家里用 nginx 和 PHP 设置一个小树莓派。 之前我使用带有 apache 和 PHP 的 Synology nas。

现在我遇到了设置问题。我不明白为什么。 当我运行 php-info 网站时,它会显示所有信息。

在一些 PHP 站点上,我从 nginx 收到“发生错误”的错误。 我的 nextcloud 告诉我“内部服务器错误”

我的 nginx.conf:

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request"      '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

include conf.d/*.conf;

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /nas/web/;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /srv/www/htdocs/;
    }



    location ~ \.php$ {
            root /nas/web/;
            try_files $uri =404;
            include /etc/nginx/fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }


}



include vhosts.d/*.conf;

}

#user  nginx;
worker_processes  1;



events {
    worker_connections  1024;
use epoll;
}

php-fpm.conf:

[global]

error_log = log/php-fpm.log
include=/etc/php7/fpm/php-fpm.d/www.conf

和 www.conf:

; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = /var/run/php-fpm.sock
listen = 127.0.0.1:9000

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

pm = dynamic


pm.max_children = 5

; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3

谁能告诉我出了什么问题吗?

问候 英戈

.htaccess:

 <IfModule mod_headers.c>
  <IfModule mod_setenvif.c>
    <IfModule mod_fcgid.c>
       SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
       RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
    </IfModule>
    <IfModule mod_proxy_fcgi.c>
       SetEnvIfNoCase Authorization "(.+)" HTTP_AUTHORIZATION=$1
     </IfModule>
  </IfModule>

  <IfModule mod_env.c>
    # Add security and privacy related headers
    Header set X-Content-Type-Options "nosniff"
    Header set X-XSS-Protection "1; mode=block"
    Header set X-Robots-Tag "none"
    Header set X-Download-Options "noopen"
    Header set X-Permitted-Cross-Domain-Policies "none"
    Header set Referrer-Policy "no-referrer"
    SetEnv modHeadersAvailable true
  </IfModule>

  # Add cache control for static resources
   <FilesMatch "\.(css|js|svg|gif)$">
    Header set Cache-Control "max-age=15778463"
  </FilesMatch>

  # Let browsers cache WOFF files for a week
  <FilesMatch "\.woff2?$">
    Header set Cache-Control "max-age=604800"
  </FilesMatch>
</IfModule>
<IfModule mod_php5.c>
  php_value upload_max_filesize 511M
  php_value post_max_size 511M
  php_value memory_limit 512M
  php_value mbstring.func_overload 0
  php_value always_populate_raw_post_data -1
  php_value default_charset 'UTF-8'
  php_value output_buffering 0
  <IfModule mod_env.c>
    SetEnv htaccessWorking true
  </IfModule>
</IfModule>
<IfModule mod_php7.c>
  php_value upload_max_filesize 511M
  php_value post_max_size 511M
  php_value memory_limit 512M
  php_value mbstring.func_overload 0
  php_value default_charset 'UTF-8'
  php_value output_buffering 0
  <IfModule mod_env.c>
    SetEnv htaccessWorking true
  </IfModule>
</IfModule>
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT}  DavClnt
  RewriteRule ^$         /remote.php/webdav/          [L,R=302]
  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
  RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
  RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
  RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
  RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
  RewriteRule ^remote/(.*) remote.php [QSA,L]
  RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
  RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
  RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
</IfModule>
<IfModule mod_mime.c>
  AddType image/svg+xml svg svgz
  AddEncoding gzip svgz
</IfModule>
<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>
AddDefaultCharset utf-8
Options -Indexes
<IfModule pagespeed_module>
  ModPagespeed Off
</IfModule>

最佳答案

我用这个工具转换了mod_rewrite:https://winginx.com/en/htaccess

# nginx configuration

location /build {
}

location /tests {
}

location /config {
}

location /lib {
}

location /3rdparty {
}

location /templates {
}

location ~ /\.well-known/(acme-challenge|pki-validation)/.* {
}

location = /. {
}

location /autotest {
}

location /occ {
}

location /issue {
}

location /indie {
}

location /db_ {
}

location /console {
}

location / {
  if ($http_user_agent ~ "DavClnt"){
    rewrite ^/$ /remote.php/webdav/ redirect;
  }
  rewrite ^/\.well-known/host-meta /public.php?service=host-meta break;
  rewrite ^/\.well-known/host-meta\.json /public.php?service=host-meta-json break;
  rewrite ^/\.well-known/webfinger /public.php?service=webfinger break;
  rewrite ^/\.well-known/carddav /remote.php/dav/ redirect;
  rewrite ^/\.well-known/caldav /remote.php/dav/ redirect;
}

location /remote {
  rewrite ^/remote/(.*) /remote.php break;
}

关于php - Nginx 和 php-fpm 仅适用于某些 php 页面。怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54851197/

相关文章:

linux - 如何创建补丁以删除文件夹并使用 diff 创建新文件夹?

NGINX:主位置 block 覆盖子目录位置?

redirect - 如何在 ssl 中重定向两个域?

Linux线程 sleep 与读取

python - 相当于 Linux 上的 GetTickCount()

nginx - 在端口 1935 上提供 rtmp

javascript - d3 缩进树关闭带有子节点的其他节点并仅打开特定节点

php - 在没有内容的自定义帖子类型上使用 TinyMCE

javascript - 从 PHP 返回 JS 源代码

php - 插入MySQL时的Ajax和php