Nginx

如何修復 Nginx 給我的未知內部伺服器錯誤 (500)?

  • July 31, 2021

Nginx 給了我一個 500 錯誤,這讓我發瘋。首先,我有一個personalsite.conf存檔,裡面/etc/nginx/conf.d/有我的伺服器塊。

這是我的伺服器塊配置:

server {
   listen       80;
   server_name  personalsite.me;

   charset UTF-8;
   access_log  /var/log/nginx/personalsite.access.log  main;
   error_log /var/log/nginx/personalsite.error.log;

   root   /usr/share/nginx/html/personalsite;
   index index.php index.html index.htm;

   error_page 404 /404.html;
   error_page 500 502 503 504 /50x.html;
   location = /50x.html {
       root /usr/share/nginx/html/;
   }

   location ~ \.php$ {
       try_files $uri =404;
       include fastcgi_params;
       fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

加上 nginx 使用者分配了適當的權限/usr/share/nginx/html/personalsite/

事情是 Nginx 在我嘗試瀏覽時給我一個 500 錯誤personalsite.me,有趣的是我知道因為我檢查personalsite.access.log並看到它,因為瀏覽器只是空白。由於未知原因,Nginx 無法向我顯示其 500 錯誤頁面,如您所見,在伺服器塊中正確聲明。

另一個奇怪的是,personalsite.error.log它是空白的,它什麼也沒記錄。

此外,我在我的/etc/hosts檔案中聲明了該域及其 IP。所以我真的不知道這裡發生了什麼。

一切都在 Digital Ocean VPS 上執行 CentOS 7。

大多數錯誤是由於 Nigix 設置時的錯誤配置而出現的。我會建議檢查文件(/etc/php-fpm.d/www.conf)。

vi /etc/php-fpm.d/www.conf

找到指定 listen 參數的行,並將其更改為如下所示:

listen = /var/run/php-fpm/php-fpm.sock

接下來,找到設置和取消註釋的listen.ownerlisten.group。它們應該如下所示:

listen.owner = nobody
listen.group = nobody

最後,找到設置使用者和組的行,並將它們的值從“apache”更改為“nginx”:

user = nginx
group = nginx

然後保存退出

/etc/init.d php-fpm restart

引用自:https://unix.stackexchange.com/questions/191237