[DOCKER] Comment appliquer les restrictions d'adresse IP uniquement à des répertoires spécifiques avec laravel + nginx

Lorsque vous configurez un serveur Web avec laravel et nginx, vous souhaitez souvent limiter les adresses IP uniquement à des répertoires spécifiques. : froncer les sourcils2: La restriction d'adresse IP peut être effectuée du côté de laravel, mais je n'ai pas trouvé beaucoup d'exemples de configuration lors de la configuration de laravel + nginx, alors je l'ai résumé.

Si le nombre d'adresses IP que vous souhaitez autoriser est égal à un, placez-le correctement

if($_SERVER["REMOTE_ADDR"] !== "xxx.xxx.xxx.xxx"){
   abort(403);
}

Quoi qu'il en soit, je devrais l'écrire, mais à mesure que le nombre augmente, cela devient un peu ennuyeux. Si des adresses IP supplémentaires sont spécifiées par sous-zone. .. .. : joie:

Prérequis construction d'environnement laravel + nginx

Docker Nginx laravel

Pour la construction de l'environnement de laravel + nginx + docker, qui est le principe de cet article, reportez-vous à l'article god de @ ucan-lab ici.

https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4

Fichier de configuration Laravel + nginx qui limite les adresses IP uniquement à des répertoires spécifiques

J'ai omis les parties qui ne sont pas liées aux paramètres, veuillez donc vous référer à l'article de Dieu ci-dessus pour les paramètres de nginx.

nginx.conf



    #Les deux suivants sont les paramètres de base pour exécuter laravel sur nginx.
    #Toutes les demandes sont indexées en tant que racine laravel.Rediriger vers PHP
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # .Traitez les fichiers php avec fastcgi
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    #De là, le sujet principal est la restriction IP de l'annuaire.
    # admin/Exemple de restriction de répertoires
    location /admin/ {
        try_files $uri $uri/ /index.php?$query_string;
        # allow ip list
        allow xxx.xxx.xxx.xxx;
        allow yyy.yyy.yyy.yyy;
        deny all;
    }

Points de réglage

Si seuls les paramètres d'emplacement suivants sont utilisés, nginx essaiera d'afficher les fichiers sous / admin / tels quels, donc cela ne fonctionnera pas comme laravel.

    location /admin/ {
        allow yyy.yyy.yyy.yyy;
        deny all;
    }

J'ai donc dû réécrire les paramètres pour rediriger vers index.php à l'emplacement.

try_files $uri $uri/ /index.php?$query_string;

Bien entendu, il est également possible de spécifier par sous-réseau.

allow 192.168.1.0/24;

Cependant, étant donné que les paramètres de sécurité de l'ensemble de l'application seront distribués à plusieurs emplacements, le contrôleur sous / admin / et route.php etc.

/*

Les restrictions d'adresse IP sont effectuées du côté nginx

*/

Si vous commentez, ** votre futur moi ** et le ** successeur ** qui a pris le relais seront enregistrés. e? Savez-vous généralement où vous définissez la sécurité?

C'est doux: gâteau:

fin

** Vous avez maintenant des restrictions d'adresse IP sur un répertoire spécifique dans laravel. **: détendu:

Veuillez également lire les articles liés à la sécurité de laravel.

Comment verrouiller et améliorer encore la sécurité en cas d'échec de la connexion continue avec laravel https://qiita.com/reopa_sharkun/items/7def0cc0a8647df10ade

Si vous trouvez cet article utile : clap: Veuillez soutenir en appuyant sur le bouton ↓ ↓: détendu:

Recommended Posts

Comment appliquer les restrictions d'adresse IP uniquement à des répertoires spécifiques avec laravel + nginx
Comment exécuter uniquement des fichiers spécifiques avec le test de rake de gem
Comment surveiller nginx avec docker-compose avec datadog
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
Je souhaite surveiller un fichier spécifique avec WatchService
[Comment insérer une vidéo dans un hameau avec Rails]
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
Utilisez java1.7 (zulu7) dans un répertoire spécifique avec jenv
[Rails] Comment charger JavaScript dans une vue spécifique
[IOS] Pour autoriser la rotation d'un écran spécifique uniquement
[Kotlin] Comment obtenir l'adresse IP et l'agent utilisateur
[Java] Comment rompre une ligne avec StringBuilder
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Mettez en majuscule uniquement la plage spécifiée avec la sous-chaîne. (Comment utiliser la sous-chaîne)
Comment déplacer une autre classe avec une action de bouton d'une autre classe.
[Docker] Supprimer uniquement le volume associé à un conteneur spécifique
Mappage à une classe avec un objet de valeur dans How to My Batis
[ruby] Création d'un programme qui ne répond qu'à des conditions spécifiques
Comment configurer un proxy avec authentification dans Feign
Comment s'inscrire en tant que client dans Square à l'aide de Tomcat
Comment laisser un commentaire
Comment définir nginx de Docker
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Comment insérer une vidéo
Comment créer une méthode
Je souhaite rechercher de manière récursive des fichiers dans un répertoire spécifique
Comment définir l'adresse IP et le nom d'hôte de CentOS8
Comment annuler la fusion de cellules dans une plage spécifiée avec POI
Comment créer un fichier jar sans dépendances dans Maven
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment ouvrir un fichier de script à partir d'Ubuntu avec du code VS
[chown] Comment changer le propriétaire d'un fichier ou d'un répertoire
kotlin & Java: Comment masquer la barre d'outils uniquement pour des fragments spécifiques
Comment construire un peu délicat avec la génération de requêtes SQL dynamiques