【发布时间】:2019-06-27 12:05:38
【问题描述】:
我遇到了一个非常奇怪的问题。我正在尝试使用 nginx 将 gerrit 包装在 SSL/HTTPS 中,并且只有当我让 dev.company.com/ 指向 gerrit 时它才有效(我更喜欢 dev.company.com/gerrit/,因为 Web 服务器也应该托管其他服务。)
这是我能找到的唯一可行的解决方案。
gerrit 的 etc/gerrit.config:
[gerrit]
canonicalWebUrl = https://dev.company.com/
[httpd]
listenUrl = proxy-https://127.0.0.1:8081/
(snip)
nginx在sites-available中的配置:
server {
listen 443 ssl;
server_name dev.company.com;
ssl on;
(ssl certificates blah blah)
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
如果我更改为以下内容:
gerrit.config:
[gerrit]
canonicalWebUrl = https://dev.company.com/gerrit/
[httpd]
listenUrl = proxy-https://127.0.0.1:8081/
(snip)
nginx 配置:
server {
listen 443 ssl;
server_name dev.company.com;
ssl on;
(ssl certificates blah blah)
location /gerrit/ {
proxy_pass http://127.0.0.1:8081/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
(注意 proxy_pass 的尾部斜杠。)
除了带有转义字符的请求(例如 %2F,gerrit 有很多)之外,其他东西都可以工作。因此,gerrit 作为一个站点,将工作一半。
我觉得this answer 应该朝着正确的方向前进,但我根本无法让事情发挥作用。
编辑:我认为this 讨论遇到了同样的错误。
【问题讨论】: