Nginx 版本不可知的 php-fpm 配置

Nginx 版本不可知的 php-fpm 配置

当我在 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

答案1

使用upstream块。这可以放入您的主nginx.conf文件中,该文件由所有服务器特定配置文件继承。

例如:

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

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

这个文件了解更多。

相关内容