Maison  >  Article  >  cadre php  >  Comment charger Laravel en utilisant Nginx ?

Comment charger Laravel en utilisant Nginx ?

藏色散人
藏色散人avant
2020-01-30 19:41:452218parcourir

Comment charger Laravel en utilisant Nginx ?

Environnement du projet php7.2, nginx, Laravel, application de compte public WeChat développée. Avec l'augmentation actuelle des visites, un seul serveur ne peut pas répondre à la demande, c'est pourquoi nginx est utilisé pour le charger.

Ce qui suit est une solution réalisable actuellement utilisée.

Référence pour les problèmes de partage de session : Laravel utilise Redis pour partager la session (explication détaillée du code)

Il existe deux serveurs Web A:10.0.0.2, B:10.0.0.3, le nom de domaine du système est www.c.com, utilisez A comme serveur proxy inverse

Configuration nginx d'un serveur

server {
listen 81;
server_name _;
index index.html index.htm index.php;
access_log /data/wwwroot/wwwlogs/www_nginx.log combined;
root /data/wwwroot/www/public;
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
location ~ .*\.(php|php5)?$ {
   fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}

Serveur B Paramètres nginx

server {
listen 80;
server_name -;
index index.html index.htm index.php;
access_log /data/wwwlogs/www_nginx.log combined;
root /data/wwwroot/www/public;
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
location ~ .*\.(php|php5)?$ {
 
   fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}

Paramètres du serveur proxy inverse sur le serveur A

upstream backend{
    ip_hash;
    server 127.0.0.1:81;
    server 10.0.0.3;
}
server {
listen 80;
server_name www.c.com;
index index.html index.htm index.php;
access_log /data/wwwroot/wwwlogs/www_nginx.log combined;
root /data/wwwroot/www/public;
location / {
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(php|php5)?$ {
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}

Si vous créez un compte public WeChat et utilisez easywechat, vous devez remplacer le backend avec le vôtre Ce n'est qu'ainsi que www.c.com peut prendre en charge l'autorisation WeChat.

Le access_token de WeChat doit être partagé à l'aide de redis. Easywechat utilise le cache de laravel par défaut, vous devez donc modifier le cache .env pour utiliser redis

CACHE_DRIVER=redis

utilisé. dans Laravel Request::getClientIp()L'IP obtenue n'est pas la vraie IP. Vous devez modifier app/Providers/AppServiceProvider.php et définir l'IP du serveur proxy de confiance (127.0.0.1, 10.0.0.2). Vous pouvez ensuite utiliser Request::getClientIp(). pour obtenir la véritable adresse IP.

  public function boot()
    {
        \Request::setTrustedProxies(['127.0.0.1','10.0.0.2']);
    }

Pour des articles plus techniques liés au framework laravel, veuillez visiter la colonne tutoriel laravel !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer