Php

Nginx 版本無關的 php-fpm 配置

  • December 31, 2017

當我在 Nginx 中創建一個新的 webapp conf 時,我使用以下模板:

server {
   root /var/www/html/${domain};
   server_name ${domain} www.${domain};
   location ~*  \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ {
       expires 365d; 
   }
   location / {
       index index.php index.html index.htm fastcgi_index;
       try_files $uri $uri =404 $uri/ /index.php?$args;
   }
   location ~ \.php$ {
       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
   }
}

請注意該模板中的以下location塊:

location ~ \.php$ {
   fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
}

是否有一種“安全”的方法可以使其與版本無關(也就是說,不專門針對版本 7.0 或任何其他版本)。

你知道這樣做的方法嗎?我不確定正則表達式是最好的方法,也許還有另一種配置方法。

更新

順便說一句,這些 7.0 指令可能有點痛苦 - 你有時只想執行一個腳本,而不開始測量版本:

sed -i 's/post_max_size \= .M/post_max_size \= 200M/g' /etc/php/7.0/fpm/php.ini
sed -i 's/upload_max_filesize \= .M/upload_max_filesize \= 200M/g' /etc/php/7.0/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/fpm/php.ini
/etc/init.d/php7.0-fpm restart && systemctl restart nginx.service

使用upstream塊。這可以放在您nginx.conf的所有伺服器特定配置文件繼承的主文件中。

例如:

upstream php {
   server unix:/var/run/php/php7.0-fpm.sock;
}

server {
   ...
   location ~ \.php$ {
       fastcgi_pass php;
       ...
   }
}

有關更多資訊,請參閱此文件

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