溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP的Web端配置Nginx熱重啟的方法

發(fā)布時間:2020-06-19 10:49:01 來源:億速云 閱讀:563 作者:Leah 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)PHP的Web端配置Nginx熱重啟的方法,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

前言

之前幫客戶整了一套基于GeoIP2的自動化AB站(Nginx Geoip2 處理不同國家 (或城市) 的訪問 ),客戶最近想通過管理端手動控制AB站切換
PHP的Web端配置Nginx熱重啟的方法

不建議使用system,exec等執(zhí)行shell命令的函數(shù)

  • 需要復(fù)雜的提權(quán)操作
  • 一般項目這些函數(shù)是被禁止
  • 作為一名合格的Phper除非特殊情況,否則是嚴(yán)禁在項目中啟用一些涉及到安全性的函數(shù)

方案思路

  1. Nginx vhost配置文件中include片段配置
  2. 后端切換AB站時,PHP邏輯中修改第一步中引入片段配置
  3. Nginx Reload
    • 第一種方案:小型項目使用crontab定時執(zhí)行nginx -s reload(搭配worker_shutdown_timeout使用)
    • 第二種方案(推薦):修改后標(biāo)記需要reload狀態(tài)(File or DB or Cache),定時器通過python腳本查詢是否需要reload去執(zhí)行nginx -s reload

方案一

1.創(chuàng)建片段配置文件

創(chuàng)建獨(dú)立片段Nginx配置文件,例如ar414.conf,然后在nginx vhostinclude

ar414.conf

root /www/wwwroot/ahost;

2.站點(diǎn)配置文件中include配置文件ar414.conf

site.conf

server {
        listen       80;
        server_name  0.0.0.0;
        index index.html;
        include /www/wwwroot/abhost/ar414.conf;
    }

3.后臺邏輯中操作ar414.conf

if($data['site_set'] == AbHostSiteEnum::Ahost) {
    //開啟A站
    $ahostPath = AbHostSiteEnum::AhostPath;
    file_put_contents('./ar414.conf',"root {$ahostPath};");}else {
    //開啟B站
    $bhostPath = AbHostSiteEnum::BhostPath;
    file_put_contents('./ar414.conf',"root {$bhostPath};");}

4.Nginx全局配置中設(shè)置worker_shutdown_timeout

30s內(nèi)Nginx無法平滑退出,就強(qiáng)行關(guān)閉進(jìn)程

nginx.conf

...worker_shutdown_timeout  30;

5.定時執(zhí)行Nginx熱重啟

crontab -e

*/5 * * * * nginx -s reload

關(guān)于PHP的Web端配置Nginx熱重啟的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI