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!