1

所以我最近开始遇到 NGINX 因未知原因而崩溃的问题。

在尝试修复它花了很多时间之后,我决定改用 Caddy。

我的球童配置适用于浏览网站,但它破坏了/synchrony在编辑页面时使用的访问权限。websocket 部分有效,我使用http://websocket.org/echo.html进行了测试,但 Confluence 还通过该路径检索了一些脚本。

我使用以下内容作为故障排除的参考: https ://confluence.atlassian.com/conf60/troubleshooting-collaborative-editing-852732552.html

我的工作 NGINX 配置

server {
    listen 443 ssl;

    server_name [REDACTED];

    ssl_certificate [REDACTED];
    ssl_certificate_key [REDACTED];

    client_max_body_size 100m;

    location / {
        proxy_pass http://localhost:8090;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    }
    location /synchrony {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8091/synchrony;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

我建议的等效非工作 Caddy 配置

https://[REDACTED] {
  log access.log
  errors error.log
  gzip
  tls "C:\caddy\[REDACTED].cer" "C:\caddy\[REDACTED].key"

  proxy /synchrony http://localhost:8091/synchrony {
    websocket
  }

  proxy / http://localhost:8090 {
    except /synchrony
    transparent
  }
}

以上基于以下文档:https://caddyserver.com/docs/proxy 它使用了transparent&websocket预设。

似乎阻止编辑页面的主要错误 Chrome 开发者工具网络请求失败的截图

4

1 回答 1

1

我认为您可能需要使用该without参数。

without是在上游代理请求之前要修剪的 URL 前缀。/api/foo without /api例如,对 的请求将导致对 的代理请求/foo

你可以试试这个:

https://[REDACTED] {
  log access.log
  errors error.log
  gzip
  tls "C:\caddy\[REDACTED].cer" "C:\caddy\[REDACTED].key"

  proxy /synchrony http://localhost:8091/synchrony {
    websocket
    without /synchrony
  }

  proxy / http://localhost:8090 {
    except /synchrony
    transparent      
  }
}
于 2018-02-16T15:27:20.810 回答