继续尝试将 nginx 配置为使用在本地主机上运行的反向代理来激进化,我现在在遵循有关代理的文档后遇到 SSL 错误,我创建了自己的 SSL 证书。
我的 nginx 配置的相关部分是
location /radicale/ {
proxy_pass http://127.0.0.1:9468/;
#proxy_pass http://46.105.31.182:9468/;
proxy_set_header X-Script-Name /radicale;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-User $remote_user;
auth_basic "Radicale - Password Required";
auth_basic_user_file /etc/radicale/users;
proxy_ssl_verify on;
proxy_ssl_certificate /etc/radicale/client_cert.pem;
proxy_ssl_certificate_key /etc/radicale/client_key.pem;
proxy_ssl_trusted_certificate /etc/radicale/server_cert.pem;
}
...而我对 SSL 证书的激进配置是...
[server]
hosts = 127.0.0.1:9468
ssl = true
certificate = /etc/radicale/server_cert.pem
key = /etc/radicale/server_key.pem
certificate_authority = /etc/radicale/client_cert.pem
[auth]
type = http_x_remote_user
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt
如果我访问站点https://####/radicale ,系统会提示我输入用户名和密码以进行身份验证,但是 nginx 然后返回以下错误...
upstream prematurely closed connection while reading response header from upstream, client: 62.253.154.162, server: #####, request: "GEET /radicale/ HTTP/2.0", upstream: "http://127.0.0.1:9468/", host: "####"
...和上游 Radicale 报告...
ERROR: An exception occurred during request: SSL handshake failed: [SSL: HTTP_REQUEST] http request (_ssl.c:1076)
如果我在 Radicale 和 nginx 上的反向代理之间禁用 SSL,那么这不是问题,我可以访问 WebUI https://####/radicale并且可以登录。但是,如果我启用它,然后转到https://####/radicale,我会收到一个弹出框,要求我输入用户名/密码,并且浏览器报告502 Bad Gateway
并且上述错误再次发生。
我确实有 LetsEncrypt 证书,并且在我的域上工作这是否会导致与用于反向代理的 SSL 证书发生某种冲突?
根据Nginx 文档
proxy_ssl_certificate
proxy_ssl_certificate_key
,如果您希望NGINX 通过使用提供的 SSL 客户端证书向上游服务器标识自己,则相关。您还需要配置上游服务器以要求所有传入 SSL 连接的客户端证书我相信 Radicale 没有通过客户端证书处理身份验证,并且您的 Radicale 服务器正在侦听,
127.0.0.1
因此通过在 Radicale 上配置 SSL,您基本上是在尝试加密 localhost 上的流量。配置中的另一点。
您的身份验证部分已经由 Radicale 自己处理。在反向代理上添加这些行是没有意义的。
我建议:
如果您仍想加密反向代理和 Radicale 之间的流量,只需删除客户端证书部分并添加
proxy_ssl_name
proxy_ssl_name
需要避免错误这是因为用于验证 SSL 证书名称的名称默认为 $proxy_host。
我知道这是一个旧线程,但为了记录,我让它像这样工作......
我正在使用一个单独的子域,例如radicale.example.com,脚本就在
/
其中,所以这X-Script-Name
就是设置的内容。我使用letsencrypt/certbot作为证书。nginx 节是:
}
Radicale 配置中不需要 SSL 设置,我让 Radicale 处理用户密码。