服务器是debian,seafile是docker的8.0.4 pro
因单位交换机限制了80和443,所以除办公室内部外,需要使用非标准端口
为了方便使用,用nginx开代理,同时开启两个端口443和444,这样在办公室内部就可以不敲端口号,到外部,加上端口号也能访问
但是使用443时没问题,使用444时无法登录,提示
Forbidden (403)
CSRF verification failed. Request aborted.
不过如果是在内部,使用443登录,再切回444,还是能访问的,所以应该只是登录问题,尝试修改$host为$http_host等,均无效
服务器上的nginx设置:
listen 443 ssl http2; listen [::]:443 ssl http2; listen 444 ssl http2; listen [::]:444 ssl http2; server_name cloud.domain.com; location ^~ / { proxy_pass http://192.168.0.x/; proxy_set_header host $http_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 https; client_max_body_size 0; }
seafile自身的nginx设置:
location / { proxy_pass http://127.0.0.1:8000/; proxy_read_timeout 310s; proxy_set_header Host $http_host; proxy_set_header Forwarded "for=$remote_addr;proto=$scheme"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Connection ""; proxy_http_version 1.1; client_max_body_size 0; access_log /var/log/nginx/seahub.access.log seafileformat; error_log /var/log/nginx/seahub.error.log; }
另外,使用多个端口的话,设置页面的服务器对外的 SERVICE_URL 和 FILE_SERVER_ROOT 怎么填?