プロジェクト環境 php7.2、nginx、Laravel、WeChatパブリックアカウントアプリケーションを開発しました。現在のアクセス数の増加では、単一のサーバーでは需要に対応できないため、負荷に nginx が使用されます。
以下は、現在使用されている実現可能なソリューションです。
セッション共有の問題のリファレンス: Laravel は Redis を使用してセッションを共有します (コードの詳細な説明)
Web サーバーが 2 つありますA: 10.0 .0.2
、B:10.0.0.3
、システム ドメイン名は www.c.com
、リバース プロキシ サーバーとして A を使用します
サーバーの nginx 構成
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 サーバーの 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; } }
サーバー上のリバース プロキシ サーバー設定
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; } }
WeChat 公開アカウントを作成して easywechat を使用している場合は、WeChat 認証をサポートするためにバックエンドを www.c.com に置き換える必要があります。
WeChat の access_token は redis を使用して共有する必要があります。Easywechat はデフォルトで laravel のキャッシュを使用するため、redis を使用するように .env キャッシュを変更する必要があります
CACHE_DRIVER=redis
Request::getClientIp() Laravel で使用される IP は実際の IP ではありません。
app/Providers/AppServiceProvider.php を変更して、信頼できる IP を設定する必要があります。プロキシ サーバー (127.0.0.1、10.0.0.2) の場合、Request::getClientIp() を使用して実際の IP を取得できます。
public function boot() { \Request::setTrustedProxies(['127.0.0.1','10.0.0.2']); }
laraveltutorial列をご覧ください。
以上がNginxを使用してLaravelをロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。