nginx服务器和seafile服务器怎么分离开来?

需求

seafile是我很喜欢的一款共享软件(非常适合内部办公协作共享),我经常关注它最新的动态。由于近期一些调整,我想把nginx服务器放在另外一台vm主机上,通过https://youedomain.com可以正常访问到seafile服务器。

问题

我使用了官方的推荐nginx配置,但是在分离时,我无法把配置里面的这个部分剥离出来放到nginx服务上(因为它无法被远程访问到,在本地seafile服务器上的话没有这个问题)。

	location /media {
		root /opt/seafile/seafile-server-latest/seahub;
	}

请求帮忙

bbs和forum上面都看过文章了,也做了一些尝试了,都暂时没有简单有效的办法。想请教下各位大神是否有推荐的办法或者官方后期有没有考虑这一块做出优化更新。

@daniel.pan @Hulk @lian @jiaqiang.xu 有没有人啊

兄弟,你可以在nginx(Server1) + nginx(server2) + seafile(server2)的方式部署呀。现有部署好的架构不变,然后再vm上新部署一个nginx,用vm上的nginx直接转发到原有的服务器上的端口上

这种方式我也试过啊,因为SSL这一部分我都想放到nginx服务器上(seafile本地不涉及证书,便于后期维护),我也没做成功,兄弟给我一个思路吧,主要是这一部分比较头疼。

location /media {
		root /opt/seafile/seafile-server-latest/seahub;
	}

我们推荐的是用这种方式。Seafile 服务器上的 Nginx 是 Seafile 系统的一部分。

这个是可以做到的。至于你那边为什么有问题需要你仔细分析一下。

我的部署方式是用docker部署的,不是服务器安装,所以我的方法不一定适用你,我把我的配置贴给你看一下
我的docker-compose配置:

概要

seafile:
image: seafileltd/seafile-mc:latest
# ports:
# - “8080:80”
volumes:
- /share/CACHEDEV1_DATA/opt/seafile:/shared
environment:
- SEAFILE_ADMIN_EMAIL=xxx@xxx
- DB_HOST=DBIP
- DB_ROOT_PASSWD=xxxx
- SEAFILE_ADMIN_PASSWORD=xxxx
depends_on:
- memcached
restart: always
networks:
- nas-bridge
nginx:
image: nginx-with-tools:latest
volumes:
- /share/CACHEDEV1_DATA/opt/nginx/config:/etc/nginx/conf.d
- /share/CACHEDEV1_DATA/opt/nginx/log:/var/log/nginx
- /share/CACHEDEV1_DATA/opt/nginx/ssl:/etc/ssl/certs
ports:
- “9001:9001”
- “9002:9002”
- “9003:9003”
- “9004:9004”
restart: always
networks:
- nas-bridge

证书放在/etc/ssl/certs目录下,我的nginx配置文件defualt.conf配置:

概要

server {
listen 9001;
ssl on;
client_max_body_size 1024m;
server_name xxx.com.cn;
ssl_certificate /etc/ssl/certs/xxx.com.cn.crt;
ssl_certificate_key /etc/ssl/certs/xxx.com.cn.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ‘ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS’;
ssl_prefer_server_ciphers on;
proxy_set_header X-Forwarded-For $remote_addr;
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains”;
server_tokens off;

location / {
proxy_pass http://seafile:80;
proxy_read_timeout 1200s;
}

}

然后就可以了,nginx会把请求转发给seafile,希望可以帮到你

好的,我在尝试一下看看哪里出了问题。