AHdark
一个多语种开发蒟蒻
AHdark Blog

Cloudreve & Unix Socket

前言

看到这里你是不是很懵逼,是不是不知道这个有什么作用,是不是连Unix Socket是啥都不知道

vhost/ahdark.com.conf

诶,是不是很熟悉,原来Apache调用PHP就是使用的unix socket

那么,unix socket是什么呢?

Unix Socket

Unix Socket是一种Socket方式实现进程间通信(IPC)的功能,与普通的网络socket相比,不需要进行复杂的数据打包拆包,校验和计算验证,不需要走网络协议栈,而且安全可靠

比如常见的PHP的Socket文件 /tmp/php-cgi-74.sock

如上图,Apache通过unix:/tmp/php-cgi-74.sock与PHP通信,再将通信内容以fastcgi形式处理

但坏处显然就是,这只能在本地使用,因为unix socket地址为文件路径

所以,Cloudreve + Unix Socket就可以很好地取代http反代

而且很明显,这比http反代快得多且稳定得多

Cloudreve

这很简单,你只需要改动一点点配置文件

Apache

我很热爱Apache

这是我原来的反向代理配置,反代127.0.0.1:5212

<IfModule mod_proxy.c>
    AllowEncodedSlashes NoDecode
    ProxyPass / "http://127.0.0.1:5212" nocanon
</IfModule>

在打开Cloudreve的Unix Socket后,我改变了我的反向代理配置

<IfModule mod_proxy.c>
    AllowEncodedSlashes NoDecode
    ProxyPass / "unix:///tmp/cloudreve.sock|http://127.0.0.1/" nocanon
</IfModule>

请切记修改配置文件后重启Apache

service httpd restart
# 或
systemctl restart httpd

Nginx

示例配置文件来源于https://docs.cloudreve.org/getting-started/install

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5212;

    # 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
    # client_max_body_size 20000m;
}

修改后:(未经测试请慎重使用)

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass unix:///tmp/cloudreve.sock;

    # 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
    # client_max_body_size 20000m;
}

你可以前往https://pan.ahdark.com测试效果,这是我的私有云盘(不开放注册)

赞赏
本文链接:https://ahdark.com/som/870.shtml
本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可
欢迎加入Q群交流:654022768

AH Dark

文章作者

本博客的运营者、主要开发者、主要作者 深度学习算法工程师,后端工程师,嵌入式软件开发工程师 Azure认证 运维工程师

发表评论

textsms
account_circle
email

AHdark Blog

Cloudreve & Unix Socket
通过Unix Socket反代Cloudreve以获得更好的稳定性和速度
扫描二维码继续阅读
2021-08-29