首頁 >後端開發 >PHP問題 >PHP Web 端如何操作 Nginx 配置

PHP Web 端如何操作 Nginx 配置

Guanhui
Guanhui轉載
2020-06-18 18:08:042625瀏覽

PHP Web 端如何操作 Nginx 配置

PHP Web端安全性操作Nginx配置及熱重啟

前言

之前幫客戶整了一套基於GeoIP2的自動化AB站(Nginx Geoip2 處理不同國家(或城市) 的訪問 ),客戶最近想透過管理端手動控制AB站切換
PHP Web 端如何操作 Nginx 配置

#不建議使用system,exec等執行shell命令的函數

  • 需要複雜的提權操作
  • 一般項目這些函數是被禁止
  • 作為一名合格的Phper除非特殊情況,否則是嚴禁在專案中啟用一些涉及到安全性的函數

方案想法

  1. Nginx vhost設定檔中include片段設定
  2. 後端切換AB站時,PHP邏輯中修改第一步驟中引入片段配置
  3. Nginx Reload
    • 第一種方案:小型專案使用crontab定時執行nginx -s reload(搭配worker_shutdown_timeout使用)
    • 第二種方案(建議):修改後標記需要reload狀態(File or DB or Cache),定時器透過python腳本查詢是否需要reload去執行nginx -s reload

#方案一

#1.建立片段設定檔

建立獨立片段Nginx配置文件,例如PHP Web 端如何操作 Nginx 配置.conf,然後在nginx vhostinclude

##PHP Web 端如何操作 Nginx 配置.conf#

root /www/wwwroot/ahost;

2.網站設定檔中include設定檔PHP Web 端如何操作 Nginx 配置.conf

site.conf #

server {
        listen       80;
        server_name  0.0.0.0;
        index index.html;
        include /www/wwwroot/abhost/PHP Web 端如何操作 Nginx 配置.conf;
    }

3.後台邏輯中操作PHP Web 端如何操作 Nginx 配置.conf
if($data['site_set'] == AbHostSiteEnum::Ahost) {
    //开启A站
    $ahostPath = AbHostSiteEnum::AhostPath;
    file_put_contents('./PHP Web 端如何操作 Nginx 配置.conf',"root {$ahostPath};");}else {
    //开启B站
    $bhostPath = AbHostSiteEnum::BhostPath;
    file_put_contents('./PHP Web 端如何操作 Nginx 配置.conf',"root {$bhostPath};");}

4.Nginx全域設定中設定worker_shutdown_timeout

30s內Nginx無法平滑退出,就強行關閉進程

nginx.conf

...worker_shutdown_timeout  30;

5.定時執行Nginx熱重啟

crontab -e

*/5 * * * * nginx -s reload
推薦教學:《

PHP

以上是PHP Web 端如何操作 Nginx 配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除