-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: