小编Ben*_*end的帖子

在站点范围内启用基本身份验证并为子页面禁用它?

我有一个相对简单的配置:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        proxy_pass http://appserver-1;
        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;

        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;

    }

    location /api/ {
        auth_basic          off;
    }
}
Run Code Online (Sandbox Code Playgroud)

目标是在整个网站上使用基本身份验证,除了在/api/子树上。虽然它确实适用于基本身份验证,但其他指令proxy_pass也不起作用/api/

是否可以仅禁用基本身份验证,同时保留其他指令而不复制和粘贴所有内容?

nginx http-basic-authentication

36
推荐指数
3
解决办法
7万
查看次数

尽管没有“需要有效用户”,如何告诉 mod_auth_kerb 完成它的工作

我在 Apache 上使用mod_auth_kerb实现了 SSO 身份验证。我的配置是这样的:

<Location /login/ >
    AuthType Kerberos
    AuthName "Kerberos Login"
    KrbMethodNegotiate on
    KrbAuthoritative on
    KrbVerifyKDC on
    KrbAuthRealm D.ETHZ.CH
    Krb5Keytab /etc/HTTP.keytab
    KrbSaveCredentials on
    RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>
Run Code Online (Sandbox Code Playgroud)

我的问题是,没有require valid-user, mod_auth_kerb 甚至不会尝试对用户进行身份验证并KERBEROS_USER最终成为(null). 如果我添加require valid-user,如果浏览器支持,用户会自动进行身份验证,但如果浏览器不支持 Kerberos Negotiate,则会显示一个丑陋的模式登录表单(ala HTTP Basic Auth)。

我想要实现的是,如果用户访问/login/,mod_auth_kerb 会尝试通过 Kerberos Negotiate 对用户进行身份验证。如果失败,将向用户显示一个普通的 HTML 登录表单。

是否可以以这种方式配置 Apache/mod_auth_kerb?

kerberos mod-auth-kerb apache-2.2

11
推荐指数
1
解决办法
5856
查看次数

即使在代理服务备份后,mod_proxy 也会返回 503 错误

我将 Apache2 设置为由gunicorn提供的多个 python 应用程序的前端服务器。我使用 mod_proxy 的 Apache2 设置如下所示:

<VirtualHost *:80>
    ServerName example.com
    UseCanonicalName On
    ServerAdmin webmaster@localhost

    LogLevel warn
    CustomLog /var/log/apache2/example.com/access.log combined
    ErrorLog /var/log/apache2/example.com/error.log
    ServerSignature On

    Alias /media/ /home/example/example.com/pysrc/project/media/

    ProxyPass /media/ !
    ProxyPass / http://127.0.0.1:4711/
    ProxyPassReverse / http://127.0.0.1:4711/
    ProxyPreserveHost On
    ProxyErrorOverride Off
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

通常,此设置效果很好。但是我有一个问题:当我重新启动 gunicorn 进程(需要 2-5 秒)并且有来自 Apache 的请求时,该请求将失败并显示 503 错误。到现在为止还挺好。但是 Apache 不断返回 503 错误,即使在 gunicorn 进程备份之后也是如此。只有在 Apache 完全重新启动后,它才会从代理服务器恢复提供内容。

有没有办法解决这种行为?

reverse-proxy mod-proxy 503-error apache-2.2

7
推荐指数
1
解决办法
2万
查看次数

如果主机失去连接,则限制 nagios 警报

我们使用 nagios 来监控我们的服务器群,并且通常效果很好。但是,有时 nagios 运行的主机会失去连接几分钟,这让 nagios 相信它监控的所有服务器和服务都已关闭。结果是数百封警报邮件,紧随其后的是数百封恢复邮件。

有没有办法配置 nagios,让它在发布大量警报邮件之前测试自己的连接性?

nagios

6
推荐指数
1
解决办法
594
查看次数