Heim  >  Artikel  >  PHP-Framework  >  Wie lade ich Laravel mit Nginx?

Wie lade ich Laravel mit Nginx?

藏色散人
藏色散人nach vorne
2020-01-30 19:41:452218Durchsuche

Wie lade ich Laravel mit Nginx?

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen