在使用Stable Diffusion时,经常需要切换VPN进行环境切换,科学上网。每次切换后Stable Diffusion也都会出现 无法使用的问题,笨办法就是每次重新启动……
这种情况主要是Stable Diffusion Webui 采用的是开源的 Gradio 框架,其中部分请求使用了websockets 链接进行服务端交互,每次网络环境切换 websockets 就会中断,所以都会出现此问题。解决办法也是相当的简单。官方提供了命令行参数 --no-gradio-queue 进行配置,它可以关闭websockets 模式。
Disables gradio queue; causes the webpage to use http requests instead of websockets; was the defau
lt in earlier versions.
在webui-user 文件中设置此参数即可。
set COMMANDLINE_ARGS = --no-gradio-queue
此问题也同样适应于解决通过Web服务器进行前端反向代理时出现的websockets 链接不通的问题。
在使用Nginx 等Web服务器进行代理时,正常反向代理配置中未包括websockets链接支持,一般在nginx配置文件中会增加如下配置:
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:7860;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
通过在 proxy_set_header 参数配置中升级协议支持 websockets代理,但使用--no-gradio-queue参数可以将Stable Diffusion 转为全http支持,反向代理时可以不再进行websockets相关配置。