最近团队开发新产品,顺带折腾更新了服务器和整个开发环境版本。
运行python的服务uwsgi从0.9+升级到了最新的1.9+,发现一个bug,折腾了我一个通宵……
uwsgi原有的版本,vhost模式下,可以在nginx中配置SERVER_NAME来指定服务名。
location / {
include uwsgi_params;
uwsgi_pass unix:/var/run/uwsgi-python/sock;
uwsgi_param UWSGI_PYHOME /usr/local/pyenv/app;
uwsgi_param UWSGI_CHDIR $document_root;
uwsgi_param UWSGI_SCRIPT app_name:app;
uwsgi_param SERVER_NAME app_name;
}
该配置会指定服务名并在uwsgi启动日志中显示
WSGI app 0 (mountpoint='app_name')
但是在最新的uwsgi v1.9.12中,该配置失效,无法正确的配置mountpoint,日志会显示
WSGI app 0 (mountpoint='')
这会导致访问指定地址时在不同的app之间跳来跳去,无法正常使用。经测试1.9.12~1.9.7均存在同样问题,1.9.5版本以下会指定server+port替代
WSGI app 2 (mountpoint='domain_name:8080|')
我在github上提交了该bug,https://github.com/unbit/uwsgi/issues/321,作者修复之前建议大家先使用1.9.5版本。
NOTE:
作者已经修复了该bug,不过仍使用了server+port的模式,不知道是出于什么理由。目前版本已更新到1.9.13,通过pip install -U uwsgi可更新安装。