Comment Nginx interdit-il l'accès entre domaines à un fichier PHP ?
世界只因有你
世界只因有你 2017-05-16 17:24:55
0
3
891

Par exemple, il existe un site Web a.com et il y a un fichier ajax.php dans le répertoire. Il est désormais nécessaire que seul l'accès à a.com (c'est-à-dire lié à ce nom de domaine) soit autorisé à recevoir du POST. data. D'autres noms de domaine tels que b.com veulent POST des données sur ajax.php renvoie directement 503 ou similaire, comment l'écrire ? Je ne connais pas nginx, c'est mieux si vous pouvez donner des exemples précis, merci~

世界只因有你
世界只因有你

répondre à tous(3)
为情所困

J'ai lu le document et écrit quelques lignes de code pour résoudre le problème. J'utiliserai cette solution pour le moment. Si vous avez une meilleure solution, veuillez laisser un message.

Le code est affiché ci-dessous

        location ~ \.php$ {

        #新增代码 start

        # 假设 ajax.php 文件路径是 /includes/ajax.php 和网站域名是 www.a.com
        # 新增一个变量 $nolocal 值为1,也就是真

        set $nolocal 1;

        #下面开始判断,不是 POST 或者请求路径不是 ajax.php 的路径或者请求来源属于本站域名时,都设为0,也就是假
        #为什么是三个 if 呢?因为 nginx 居然不支持多条件判断,真是醉了~
        if ($request_method != POST) {
                set $nolocal 0;
        }
        if ($request_uri != /includes/ajax.php) {
                set $nolocal 0;
        }
        if ($http_referer ~* "www.a.com") {
            set $nolocal 0;
        }

        #经过上面的筛选,值是真的,也就是其他来源POST数据过来了,直接返回 403 拒绝处理
        #这样,其他来源的请求就浪费不了你的PHP进程了。
        if ($nolocal) {
            return 403;
        }

        #新增代码 end

        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www/a/$fastcgi_script_name;
        include        fastcgi_params;
    }
左手右手慢动作

Nginx peut créer plusieurs sites. C'est le serveur{}

dans Nginx

Créez d'abord un site par défaut :

serveur {
nom_serveur _;
racine /var/nginx/html;
}

Créer un autre site a.com :

serveur {
nom_serveur a.com www.a.com;
racine /data/www/a.com;
}

De cette façon, seul a.com pourra accéder aux fichiers sous le chemin a.com, et les autres noms de domaine accéderont aux fichiers sous le site par défaut /var/nginx/html.

阿神
if ($host != 'XXX.com' ) {
    这里写规则。
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!