我运行一个 https 网络服务器,使用 uWSGI(版本 2.0.14-debian;在装有 raspian / debian 9 stretch 的树莓派上)。
对于 https,我在配置文件中有以下几行:
[uwsgi]
...
protocol = https
https-socket = =0,/etc/ssl/certs/star.chained-certificate.crt,/etc/ssl/private/star.privatekey.pem
...
我在 systemd 服务文件中将端口设置为“--shared-socket 0.0.0.0:443”。只要我将 uwsgi 服务器作为 systemd 服务启动,此方法便可行。但当套接字激活时则不然。
要使用套接字激活,我没有在 uwsgi.service 文件中指定共享套接字。当传入请求启动服务时,uwsgi 不会收到任何数据或请求,并且 https 请求超时。
查看源代码(uwsgi_setup_systemd() 和 uwsgi_bind_sockets()),systemd 提供的套接字可能绑定为“--socket”而不是“--shared-socket”(这可以解释为什么套接字激活在我手中对 http 有效但对 https 无效)。
为 https 和套接字激活设置 uWSGI 的正确方法是什么?