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

PHP Web 端如何操作 Nginx 配置

Guanhui
發布: 2023-03-01 15:48:02
轉載
2639 人瀏覽過

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中文網其他相關文章!

相關標籤:
php
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板