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構成は次のとおりです.
この構成では,クッキーの判断によってbackend最終proxy passがどこへ行くかを決定することで,我々は見ることができる.ここで、/switchは環境を切り替えるリンクです.
Step 2:簡単なpython切り替え環境の応用
10.129.5.20にpythonアプリケーション(uwsgiまたはこれまで指定されたポートで実行)を配備し、上記のnginxでurlとして構成されているので、切り替えることができます.
例 host解析appを指定する.host.comから10.129.5.20 環境を切り替え、ブラウザを直接使用して
この2つの問題を解決するために、別の方法で、一致したドメイン名、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として構成されているので、切り替えることができます.
例
http://app.host.com/switch/testing|dev
にアクセスすれば、現在のブラウザの環境を切り替えることができます.