ホームページ  >  記事  >  PHPフレームワーク  >  Nginxを使用してLaravelをロードするにはどうすればよいですか?

Nginxを使用してLaravelをロードするにはどうすればよいですか?

藏色散人
藏色散人転載
2020-01-30 19:41:452218ブラウズ

Nginxを使用してLaravelをロードするにはどうすればよいですか?

プロジェクト環境 php7.2、nginx、Laravel、WeChatパブリックアカウントアプリケーションを開発しました。現在のアクセス数の増加では、単一のサーバーでは需要に対応できないため、負荷に nginx が使用されます。

以下は、現在使用されている実現可能なソリューションです。

セッション共有の問題のリファレンス: Laravel は Redis を使用してセッションを共有します (コードの詳細な説明)

Web サーバーが 2 つありますA: 10.0 .0.2B: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']);
    }

laravelフレームワークに関連する技術的な記事については、

laraveltutorial列をご覧ください。

以上がNginxを使用してLaravelをロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。