文档

通过 nginx 代理

模式:

  • serverA: hosting seafile
  • serverB: public server

nginx + server A (seafile server)

作用:

  • 代理,转换 seafile + docker compose 部署的各种服务,替代自带的 Caddy

    • 因为 Caddy + nginx 会出现, nginx 代理 Caddy 服务,配置出错问题

nginx.yaml – compose 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
services:
  nginx:
    image: docker.1ms.run/nginx:1.19.2-alpine
    volumes:
      - ./nginx_conf.d:/etc/nginx/conf.d:ro
      # - ./source/docs-management:/var/www
    ports:
      - "5380:80"
    networks:
      - seafile-net
    restart: always

networks:
  seafile-net:
    name: seafile-net

nginx_conf.d/seafile.conf:

  • seafile 服务的反向代理配置文件
  • 注意:下面只设置了 port(listen 80),没有设置 domain
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
server {
  listen 80;

		location / {
				proxy_pass http://seafile:80;
				proxy_read_timeout 310s;
				proxy_set_header Host $host;
				proxy_set_header X-Real-IP $remote_addr;
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header Connection "";
				proxy_http_version 1.1;

				client_max_body_size 0;
		}



# seadoc

		location /sdoc-server/ {
				# proxy_pass         http://seadoc:8888/;
				proxy_pass         http://seadoc:80/;
				proxy_redirect     off;
				proxy_set_header   Host              $host;
				proxy_set_header   X-Real-IP         $remote_addr;
				proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
				proxy_set_header   X-Forwarded-Host  $server_name;

				client_max_body_size 100m;
		}

		location /socket.io {
				# proxy_pass http://127.0.0.1:8888;
				proxy_pass http://seadoc:80;
				proxy_http_version 1.1;
				proxy_set_header Upgrade $http_upgrade;
				proxy_set_header Connection 'upgrade';
				proxy_redirect off;

				proxy_buffers 8 32k;
				proxy_buffer_size 64k;

				proxy_set_header X-Real-IP $remote_addr;
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header Host $http_host;
				proxy_set_header X-NginX-Proxy true;
		}

# # notification server
# 		location /notification {
# 				proxy_pass http://127.0.0.1:8083;
# 				proxy_http_version 1.1;
# 				proxy_set_header Upgrade $http_upgrade;
# 				proxy_set_header Connection "upgrade";
# 				access_log      /var/log/nginx/notification.access.log seafileformat;
# 				error_log       /var/log/nginx/notification.error.log;
# 		}
#
# # onlyoffice
#
# 		map $http_x_forwarded_proto $the_scheme {
# 				default $http_x_forwarded_proto;
# 				"" $scheme;
# 		}
# 		map $http_x_forwarded_host $the_host {
# 				default $http_x_forwarded_host;
# 				"" $host;
# 		}
# 		map $http_upgrade $proxy_connection {
# 				default upgrade;
# 				"" close;
# 		}
# 		location /onlyofficeds/ {
# 				# proxy_pass http://127.0.0.1:6233/;
# 				proxy_pass http://127.0.0.1:6233/;
# 				proxy_http_version 1.1;
# 				client_max_body_size 100M;
# 				proxy_read_timeout 3600s;
# 				proxy_connect_timeout 3600s;
# 				proxy_set_header Upgrade $http_upgrade;
# 				proxy_set_header Connection $proxy_connection;
# 				proxy_set_header X-Forwarded-Host $the_host/onlyofficeds;
# 				proxy_set_header X-Forwarded-Proto $the_scheme;
# 				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 		}
#
#
# # thumbnail
# 		location /thumbnail {
# 				proxy_pass http://127.0.0.1:8084;
# 				proxy_http_version 1.1;
# 				proxy_set_header Host $host;
# 				proxy_set_header X-Real-IP $remote_addr;
# 				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 				proxy_set_header X-Forwarded-Proto $scheme;
#
# 				access_log /var/log/nginx/thumbnail.access.log;
# 				error_log  /var/log/nginx/thumbnail.error.log;
# 		}

}

seafile .env 配置 (seafile server)

1
2
SEAFILE_SERVER_HOSTNAME=seafile.mydomain.com:20443
SEAFILE_SERVER_PROTOCOL=https
  • 注意:这是 caddy 不兼容的, caddy 要求必须 seafile 所在机器是 pulbic server

seafile-server 配置修改 (seafile server)

❯ sudo nvim /opt/seafile-data/seafile/conf/seahub_settings.py

1
2
3
CSRF_TRUSTED_ORIGINS = ["https://seafile.mydomain.com:20443"]
SERVICE_URL = "https://seafile.mydomain.com:20443"
FILE_SERVER_ROOT = "https://seafile.mydoman.com:10443/seafhttp"

nignx + serverB(public server)

❯ cat /etc/nginx/sites-available/seafile.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
server {

	listen 2080;
	listen [::]:2080;

	listen 20443 ssl;
	listen [::]:20443 ssl;

	ssl_certificate /home/sawyer/.acme.sh/seafile.mydomain.com_ecc/fullchain.cer;
	ssl_certificate_key /home/sawyer/.acme.sh/seafile.mydomain.com_ecc/seafile.mydomain.com.key;

	server_name seafile.mydomain.com;


	location / {
	   # proxy_pass http://192.168.100.3:5280/;
	    proxy_pass http://192.168.100.3:5380/;
	   proxy_read_timeout 310s;
	   proxy_set_header Host $host;
	   proxy_set_header X-Real-IP $remote_addr;
	   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	   proxy_set_header Connection "";
	   proxy_set_header X-Forwarded-Proto $scheme;

	   proxy_http_version 1.1;

	   client_max_body_size 0;
	}

		
}