Nginx作为Ajenti的反向代理

4

我根据http://support.ajenti.org/topic/349870-ajenti-behind-nginx/的指引为Ajenti设置了一个服务器块。

location /ajenti {
    rewrite (/ajenti)$ / break;
    rewrite /ajenti/(.*) /$1 break;

    proxy_pass              http://127.0.0.1:8000;
    proxy_redirect /        /ajenti/;
    proxy_set_header        Host             $host;
    proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_http_version      1.1;
    proxy_set_header        Upgrade $http_upgrade;
    proxy_set_header        Connection $http_connection;
}

这让我想到了登录,但是在我登录后,Ajenti 重定向到 "/ajenti:auth" 而不是 "/ajenti/ajenti:auth"。
例如:浏览器 -> HTTPS -> Nginx -> HTTP -> Ajenti
这似乎也是 "ajenti:static" 资源的一个问题。
请参见:http://support.ajenti.org/topic/88086-support-ajenti-behind-a-reverse-proxy/Nginx 中处理这个问题的推荐方法是什么?
2个回答

4

编辑:加入proxy_set_header Origin http://$host;对我来说解决了这个问题。

升级到最新版的ajenti后,我也遇到了这个问题。错误403无效的来源。这是我的设置。

server {
    listen 443 ssl;
    server_name ajenti.mymagicalwebsite.com;
    ssl on;

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location / {
        proxy_pass  http://localhost:8000;
        proxy_redirect off;
        proxy_set_header        Host                $host;
        proxy_set_header        X-Real-IP           $remote_addr;
        proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header        Upgrade         $http_upgrade;
        proxy_set_header        Connection      "upgrade";
        proxy_read_timeout      36000s;  ## Timeout after 10 hours
    }
}

有趣的是,使用完全相同的设置,一个版本之前所有都正常工作。

1
添加这行代码就解决了问题,我猜是因为我将代理从HTTPS转换为HTTP。 proxy_set_header Origin http://$host; - theJustinWalsh
2
根据您上面的评论(Hardex),但是将http更改为“proxy_set_header Origin http://$host;”。谢谢 :) - Rob Ferguson

0

以下是我的做法:

使用 location ~ /ajenti.* 来匹配 Ajenti 的资源 URL。

编辑:测试过了,确实可以工作。


1
哎呀,对我没起作用。我在位置末尾添加了.*,但是出现了404错误。刚刚注意到(在浏览器控制台中),登录后的POST返回“403无效来源”? - Rob Ferguson
你是否指定了正则表达式的位置匹配?例如:location ~ /ajenti.* - Eugene Pankov
我应该将它放在答案中,抱歉。 - Eugene Pankov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接