我刚刚在 Apache 服务器后面设置了几个 WSGI 应用程序,这些应用程序使用同一主机上的 UNIX 套接字代理到 uwsgi。通常宣传的实现方法似乎是这样的:
Apache config:
ProxyPass / unix:/var/lib/uwsgi/app1.sock|uwsgi://uwsgi-uds-app1/
uwsgi .ini
socket = /var/lib/uwsgi/app1.sock
我做了一些不同的事情:
Apache config:
ProxyPass / unix:/var/lib/uwsgi/app1.sock|http://127.0.0.1/
uwsgi .ini
http-socket = /var/lib/uwsgi/app1.sock
因此,在我的设置中,Apache 和 uwsgi 基本上使用 http 而不是 uwsgi 的本机协议进行通信。对我来说,这样做的好处是,我省去了一个额外的依赖项 (mod_proxy_uwsgi),并且能够使用 curl --unix-socket 直接与 uwsgi 服务器通信,从而更容易调试整个设置
那么使用 uwsgi 协议有什么好处呢?如果只是性能方面的问题 —— 对于我的小容量应用程序来说没问题。
答案1
mod_proxy_uwsgi 几年前就已经包含在 apache2 中了,所以不应该是“额外的依赖”。
是的,将 http 替换为uWSGI 协议(就其本身而言)只是一种效率优势。uWSGI 的其他部分(例如使用 UNIX 套接字)提供了安全性优势。您确实可以将设置配置为较弱的优化 - 但正如最初提到的那样,在我看来,您这样做的理由已经过时了。