nginx监听多个端口时,非443端口不能登录


#1

服务器是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 怎么填?