PHP Web側でNginxの設定を操作する方法

Guanhui
リリース: 2023-03-01 15:48:02
転載
2597 人が閲覧しました

PHP Web側でNginxの設定を操作する方法

PHP Web 側の安全な操作 Nginx の構成とホット リスタート

まえがき 以前、私は顧客が GeoIP2 に基づいて自動化された AB ステーションを構築するのを支援しました (Nginx Geoip2 はさまざまな国 (または都市) からのアクセスを処理します) )、顧客は最近、管理端末を介して AB ステーションの切り替えを手動で制御したいと考えています。


PHP Web側でNginxの設定を操作する方法

system、exec、およびシェル コマンドを実行するその他の関数の使用は推奨されません。

複雑な権限昇格操作が必要です
  • これらの機能は一般プロジェクトでは禁止されています
  • 資格のある Phper として、特別な事情がない限り、有効にすることは固く禁止されています。プロジェクト内のいくつかのセキュリティ関連関数機能

ソリューションのアイデア

Nginx vhost 構成ファイル
    include
  1. フラグメント構成バックエンドの切り替えステーション AB の場合、PHP ロジックを変更して最初のステップでフラグメント構成を導入します
  2. Nginx Reload
  3. 最初の解決策: 小規模プロジェクトは crontab を使用して nginx -s を実行します定期的にリロードする (worker_shutdown_timeout で使用)
    • 2 番目の解決策 (推奨): 変更後、マークはリロード ステータス (ファイル、DB、またはキャッシュ) を要求し、タイマーは Python スクリプトを介して nginx を実行するためにリロードが必要かどうかをクエリします。 -s reload

オプション 1

#1. フラグメント構成を作成するfile独立したフラグメント Nginx 構成ファイル (例:

PHP Web側でNginxの設定を操作する方法.conf

) を作成し、次に includePHP Web側でNginxの設定を操作する方法.conf

nginx vhost の

root /www/wwwroot/ahost;
ログイン後にコピー

2.include構成ファイル PHP Web側でNginxの設定を操作する方法.conf

サイト構成ファイル内の #site.conf

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">server {         listen       80;         server_name  0.0.0.0;         index index.html;         include /www/wwwroot/abhost/PHP Web側でNginxの設定を操作する方法.conf;     }</pre><div class="contentsignin">ログイン後にコピー</div></div>

3. バックグラウンド ロジックでの操作PHP Web側でNginxの設定を操作する方法.conf<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if($data['site_set'] == AbHostSiteEnum::Ahost) {     //开启A站     $ahostPath = AbHostSiteEnum::AhostPath;     file_put_contents('./PHP Web側でNginxの設定を操作する方法.conf',&quot;root {$ahostPath};&quot;);}else {     //开启B站     $bhostPath = AbHostSiteEnum::BhostPath;     file_put_contents('./PHP Web側でNginxの設定を操作する方法.conf',&quot;root {$bhostPath};&quot;);}</pre><div class="contentsignin">ログイン後にコピー</div></div>

4.Nginx グローバル設定で worker_shutdown_timeout を設定します

Nginx は 30 秒以内にスムーズに終了できないため、プロセスを強制的に終了します

nginx.conf

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">...worker_shutdown_timeout  30;</pre><div class="contentsignin">ログイン後にコピー</div></div>

5. Nginx ホット リスタートを定期的に実行します

crontab -e

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">*/5 * * * * nginx -s reload</pre><div class="contentsignin">ログイン後にコピー</div></div>推奨チュートリアル: "

PHP

"

以上がPHP Web側でNginxの設定を操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート