Projektumgebung PHP7.2, Nginx, Laravel, öffentliche WeChat-Kontoanwendung entwickelt. Bei der aktuellen Zunahme der Besuche kann ein einzelner Server den Bedarf nicht decken, daher wird Nginx zum Laden verwendet.
Das Folgende ist eine praktikable Lösung, die derzeit verwendet wird.
Referenz für Probleme beim Teilen von Sitzungen: Laravel verwendet Redis zum Teilen von Sitzungen (detaillierte Code-Erklärung)
Es gibt zwei Webserver A:10.0.0.2
, B:10.0.0.3
, der Domänenname des Systems lautet www.c.com
, verwenden Sie A als Reverse-Proxy-Server
Nginx-Konfiguration des A-Servers
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; } }
B-Server Nginx-Einstellungen
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; } }
Reverse-Proxy-Server-Einstellungen auf dem A-Server
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; } }
Wenn Sie ein offizielles WeChat-Konto erstellen und easywechat verwenden, müssen Sie das ersetzen Backend mit Ihrem Nur so kann www.c.com die WeChat-Autorisierung unterstützen.
Das access_token von WeChat muss mit Redis geteilt werden. Easywechat verwendet standardmäßig den Cache von Laravel, daher müssen Sie den .env-Cache ändern, um Redis
CACHE_DRIVER=redis
zu verwenden in Laravel Request::getClientIp()
Die erhaltene IP ist nicht die tatsächliche IP. Sie müssen app/Providers/AppServiceProvider.php
ändern und die IP des vertrauenswürdigen Proxyservers festlegen (127.0.0.1, 10.0.0.2). Dann können Sie Request::getClientIp() verwenden. um die echte IP zu erhalten.
public function boot() { \Request::setTrustedProxies(['127.0.0.1','10.0.0.2']); }
Weitere technische Artikel zum Laravel-Framework finden Sie in der Spalte Laravel-Tutorial!
Das obige ist der detaillierte Inhalt vonWie lade ich Laravel mit Nginx?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!