Rejeter Nginx Sans authentification en général

Est-il possible de rejeter toutes les demandes nginx, Qui n'envoie pas de données d'authentification de base avec eux?

J'ai de telles demandes:

xxx.xxx.xxx.xxx - - [24/Oct/2012:10:32:12 +0200] "POST /path HTTP/1.1" 401 1387 "-" "Apache-HttpClient/4.1.1 (java 1.5)" "-"
xxx.xxx.xxx.xxx - paul [24/Oct/2012:10:32:12 +0200] "POST /path HTTP/1.1" 200 192 "-" "Apache-HttpClient/4.1.1 (java 1.5)" "-"

Et je veux rejeter le premier qui n'est pas fourni à l'utilisateur. Comme vous pouvez le constater, il envoie déjà un code http 401, Mais ce code est créé non directement à partir de nginx, et du serveur d'applications de base. Je veux certainement le nier dans nginx. Existe-t-il un moyen de vérifier si l'utilisateur est fourni?

Et est-il possible sans configurer l'authentification de base ordinaire directement dans nginx?
Invité:

Agathe

Confirmation de:

Nginx stocke le nom de l'utilisateur reçu à la suite de l'authentification, dans
http://wiki.nginx.org/HttpCore ... _user
. Vous devez être capable de vérifier si ce n'est pas vide, et en conséquence, effectuez l'action souhaitée (Par exemple, renvoyez l'erreur 401). Sorte de:

if ($remote_user = ''){
return 401;
}

Apparemment, vous remplissez déjà

$remote_user

variable (parce qu'il est affiché dans vos magazines) - Autant que je sache, vous devez utiliser Nginx
http://wiki.nginx.org/HttpAuthBasicModule
Pour remplir cette variable.

L'authentification normale définit l'en-tête d'autorisation. DANS Nginx Les en-têtes de requête HTTP sont disponibles via

$http_HEADER

, Donc dans ce cas

$http_authorization

. Si vous implémentez une authentification de base à l'extérieur Nginx Et définissez ce titre, vous pouvez vérifier si le titre est vide. (Alternativement, en fonction de la manière dont vous implémentez l'authentification, vous pouvez installer votre propre titre que vous testez.).

Pour répondre aux questions, connectez-vous ou registre