Nginx

從原始碼編譯的 Nginx 和來自官方 Fedora 儲存庫的 Nginx 的奇怪問題

  • February 26, 2015

TL;DR Nginx,從原始碼編譯,在處理 .php 文件時遇到了問題,而使用相同的 PHP-FPM 配置,來自 Fedora 官方儲存庫的 nginx 在 DigitalOcean 512MB Fedora 21 x64 VPS 上工作就像一個魅力。背後的原因是什麼?

我在 Fedora 21 x64 VPS 上使用 DigitalOcean 512MB Droplet。

我從原始碼編譯 Nginx 並將其安裝在 /opt/nginx/ 中。這是輸出/opt/nginx/nginx -V

nginx version: nginx/1.7.10
built by gcc 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --sbin-path=/opt/nginx --without-http_autoindex_module --without-http_browser_module --without-http_empty_gif_module --without-http_geo_module --without-http_map_module --without-http_referer_module --without-http_scgi_module --without-http_split_clients_module --without-http_ssi_module --without-http_userid_module --without-http_uwsgi_module --with-http_gzip_static_module --with-http_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-openssl=openssl --with-pcre=pcre --with-zlib=zlib --with-ipv6

到目前為止,我只使用它來提供靜態頁面。今天,我從 Fedora 官方儲存庫安裝了 php-fpm,並配置了 nginx(我使用上述配置從原始碼編譯的那個)以通過 unix 套接字將 .php 頁面傳遞給 PHP-FPM。

不幸的是,我收到了No input file specified錯誤。我以前遇到過這個問題,所以我知道該怎麼做。我很快更改了文件權限,但仍然收到相同的錯誤。

在搜尋了幾個小時並嘗試了所有可能的解決方案後,我仍然收到同樣的錯誤。我發現這個執行緒正在共享一些相同的問題。

我想為什麼不試試 Fedora 官方儲存庫中的 Nginx。我安裝了它。停止以前的 nginx(從原始碼編譯)/opt/nginx/nginx -s stop並配置新的 nginx(來自官方 Fedora 儲存庫)以將 .php 傳遞到 PHP-FPM 到相同的 unix 套接字。

它奏效了。

我的問題是“為什麼 nginx(從原始碼編譯)在處理 php 時遇到問題,而來自 Fedora 官方儲存庫的 nginx 卻像魅力一樣工作?”。這可能是 SELinux 嗎?

編輯:有關我的設置的更多資訊。

Nginx(從原始碼編譯)

  • 安裝在 /opt/nginx/
  • 提供來自 /srv 的網頁內容

Nginx(來自官方 Fedora 儲存庫)

  • 預設安裝,一般是/usr/sbin/nginx
  • 提供來自 /usr/share/nginx/html/ 的內容

終於解決了。

SELinux 禁止 PHP-FPM 訪問該文件,因為 Web 內容是從 /srv 提供的。

執行以下命令

sudo chcon -R -t httpd_sys_content_t /srv/

解決了這個問題。

謝謝大家的幫助。

參考:https ://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/

引用自:https://serverfault.com/questions/671704