-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
如何用 Unix Socket 监听? #749
Comments
再更新一条,我的cloudreve好像并不能在run文件夹里创建文件夹,所以还是会报错502。但是可以创建文件。 |
按照你的建议 我修改后 无法连接网站 显示ERR_CONNECTION_RESET 好像nginx里只要去掉http:// 就连接不上 不知是否别的地方有问题? |
你把http:// 加回去,然后把sock文件的路径改成我给你说的试试。我刚试了试,我这么做,好了。 |
cloudreve配置改成 |
你看下nginx错误日志的提示是什么。现在还是502? |
非常感谢 加了volumes重新运行nginx后 网站正常了 |
我自己的环境是Ubuntu Server 20.04 ARM64 for RaspberryPi + Nginx 1.18.0 + Cloudreve 3.2.1。 几个要点:
我的Cloudreve直接跑在物理机上,目前运行良好。一个可行的配置文件如下所示: conf.ini[System]
Mode = master
Listen = :5212
......
[UnixSocket]
Listen = /run/cloudreve.sock Nginx:# upstream的名字要与proxy_pass中的保持一致
upstream Cloudreve {
server unix:/run/cloudreve.sock;
server localhost:5212 backup;
}
server {
server_name your.domain.net;
# 我开了HTTPS,SSL相关配置我写在了主配置文件中
listen 443 ssl http2;
listen [::]:443 ssl http2; # IPv6
# 如果您没有开HTTPS,或许可以把上面两行注释掉,像下面这么写:
# listen 80;
# listen [::]:80; # IPv6
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://Cloudreve;
client_max_body_size 4G;
}
} 希望能对大家有所帮助。 |
可以试试在unit sock 链接后面加个/ |
之前3.4.3正常的,重新安装3.5.0版本后,之前的方法好像不行了,显示502 |
请刷新,或者清除缓存 |
看change log |
运行后 /run/cloudreve.sock 会加s权限,nginx用户甚至root都不可读取,造成502 |
想问下大佬,有解决办法吗 |
问下什么系统? |
如果是debian系统,我可以确认是cloudreve 的sock创建有问题,应该是gin框架没设置好。 在 /var/www/APP/Cloudreve目录与cloudreve程序同级目录下创建cloudreve_run(记得赋予执行权限 ' chmod +x /var/www/APP/Cloudreve/cloudreve_run ')
然后配置systemctl启动:
注意debian的nginx默认是www-data用户 nginx以什么用户启动的这里(systemd service)就需要填什么用户启动cloudreve。 我是debian系统所以用www-data,
你的nginx.conf里面的用户一定要和cloudreve.service里面的
一致。 ps:如果你的cloudreve以www-data启动,那么离线下载的aria2也应该用这个用户启动,不然cloudreve读取不了aria2的文件。 |
如果你的nginx和cloudreve不是同一个用户启动,那么就会造成502错误,你可以查看nginx日志
里面应该有Permission报错,就是不同用户之间无法直接读取。 |
systemd Service 的 [RuntimeDirectory,RuntimeDirectoryMode] 两个参数将会在systemctl 运行时自动创建 所需要的 .sock unix文件,并配置其权限。 [Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
Wants=network.target
After=network.target
Wants=container-postgres.service
After=container-postgres.service
Wants=container-redis.service
After=container-redis.service
[Service]
User=root
Group=root
# If using Unix socket: tells systemd to create the /run/cloudreve folder, which will contain the cloudreve.sock file
# (manually creating /run/cloudreve doesn't work, because it would not persist across reboots)
WorkingDirectory=/mnt/public/www/cloudreve
RuntimeDirectory=cloudreve
RuntimeDirectoryMode=0755
ExecStart=/mnt/public/www/cloudreve/cloudreve -c /mnt/public/www/cloudreve/cloudreve.ini
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target |
我现在遇到的问题是/run/cloudreve/cloudreve.sock文件被cloudreve创建之后的权限是0755,如果我的启动用户和nginx不一样的话,因为权限问题,nginx就无法访问/run/cloudreve/cloudreve.sock文件,socket监听就失败了。 |
方法有两种哈:
这问题都是21年创建的了,让开发解决估摸也不太行;最好自己把 Linux 权限问题给处理好。。。 |
@FansChou 你有没有试过使用运行nginx的用户运行cloudreve? |
3.6.0 版本中增加了设置项,socket 文件的权限可以自定义了。 |
前端是trojan-go以h2协商连接,非trojan-go的https连接回落给nginx。
cloudreve用端口5212 我运行成功了
现打算改成Unix Socket 监听 按照教程 修改了配置文件和nginx 但是打开网页提示502 Bad Gateway
请指点 配置哪里不对
Cloudreve配置文件
nginx
The text was updated successfully, but these errors were encountered: