ホームページ >バックエンド開発 >PHPの問題 >PHP Web側でNginxの設定を操作する方法

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

Guanhui
Guanhui転載
2020-06-18 18:08:042631ブラウズ

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

<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>

3. バックグラウンド ロジックでの操作PHP Web側でNginxの設定を操作する方法.conf<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>

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

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

nginx.conf

<pre class="brush:php;toolbar:false">...worker_shutdown_timeout  30;</pre>

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

crontab -e

<pre class="brush:php;toolbar:false">*/5 * * * * nginx -s reload</pre>推奨チュートリアル: "

PHP

"

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

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。