Nginx
如何修復 Nginx 給我的未知內部伺服器錯誤 (500)?
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.owner
行listen.group
。它們應該如下所示:listen.owner = nobody listen.group = nobody
最後,找到設置使用者和組的行,並將它們的值從“apache”更改為“nginx”:
user = nginx group = nginx
然後保存退出
/etc/init.d php-fpm restart