Ngnixと簡単なPythonプログラムで環境の切り替えを実現

1750 ワード

開発の過程では、異なる環境の切り替えや並列開発の問題に関わることが多く、この問題を解決するためにhostを切り替えたり、異なる環境で異なるドメイン名を指定したりすることで実現されることが多い.しかし、この中には2つの問題があります.
  • 切替hostは、dnsキャッシュまたはブラウザキャッシュの問題
  • を受けることがある.
  • 異なる環境で異なるhostは、バージョンのリリース時に誤ったhostがオンラインで問題を引き起こす可能性があります.

  • この2つの問題を解決するために、別の方法で、一致したドメイン名、nginx転送方式を使用して、異なる環境の切り替えを実現することができます.例は以下の通りです.
  • app.host.comアプリケーション、デフォルトdns解析10.129.5.20
  • 試験(testing)10.129.5.21:5000
  • 開発環境(dev)10.129.5.22:5000
  • Step 1:nginx構成
    10.129.5.20サーバのnginx構成は次のとおりです.
    server{
            listen 80;
            server_name app.host.com;
            set $backend "http://10.129.5.21:5000";
    
            if ($http_cookie ~ "env=testing") {
                set $backend "http://10.129.5.21:5000"
            }
            if ($http_cookie ~ "env=dev") {
                set $backend "http://10.129.5.21:5000";
            }
            location /switch{
                proxy_pass http://127.0.0.1:5000/switch;
            }
            location / {
                proxy_pass $backend;
            }
    
        }
    

    この構成では,クッキーの判断によってbackend最終proxy passがどこへ行くかを決定することで,我々は見ることができる.ここで、/switchは環境を切り替えるリンクです.
    Step 2:簡単なpython切り替え環境の応用
    from flask import Flask, make_response
    
    app = Flask(__name__)
    
    @app.route('/switch/')
    def switch(env):
        resp = make_response('environment switch to %s' % env)
        resp.set_cookie('env', env)
        return resp
    
    if __name__ == '__main__':
        app.run()
    
    

    10.129.5.20にpythonアプリケーション(uwsgiまたはこれまで指定されたポートで実行)を配備し、上記のnginxでurlとして構成されているので、切り替えることができます.
  • host解析appを指定する.host.comから10.129.5.20
  • 環境を切り替え、ブラウザを直接使用してhttp://app.host.com/switch/testing|devにアクセスすれば、現在のブラウザの環境を切り替えることができます.