Maison  >  Article  >  développement back-end  >  Explication de l'opération de séparation dynamique et statique Nginx

Explication de l'opération de séparation dynamique et statique Nginx

小云云
小云云original
2018-03-29 09:33:564467parcourir

Nginx a de fortes capacités de traitement statique, mais des capacités de traitement dynamique insuffisantes. Par conséquent, la technologie de séparation dynamique et statique est couramment utilisée dans les entreprises. La technologie de séparation dynamique et statique utilise en fait une méthode proxy, ajoutant un emplacement avec une correspondance régulière dans la section server{} pour spécifier les éléments correspondants. Séparation dynamique et statique pour PHP : les pages statiques sont transmises à Nginx pour traitement et les pages dynamiques sont transmises. vers le module PHP-FPM ou Apache pour le traitement. Dans la configuration Nginx, différentes méthodes de traitement pour les pages statiques et dynamiques sont implémentées via la section de configuration de l'emplacement et la correspondance régulière.


Explication de lopération de séparation dynamique et statique Nginx

1. Brève description du projet

Déployer WordPress pour réaliser la séparation dynamique de l'ensemble du site Web et obtenir les résultats suivants exigences :

1. Le front-end Nginx reçoit la requête statique et la renvoie directement de NFS au client.

2. Le front-end Nginx reçoit la requête dynamique et la transmet au serveur PHP pour traitement via FastCGI.

----Si vous obtenez un résultat statique, récupérez directement le résultat depuis NFS et donnez-le à Nginx puis renvoyez-le au client.

----Si un traitement des données est requis, le serveur PHP se connectera à la base de données et renverra les résultats à Nginx

3 Le front-end Nginx reçoit la demande d'image et la soumet. au format .jpg, .png, .gif, etc. Traité par le serveur d'images backend.

Explication de lopération de séparation dynamique et statique Nginx

2. Schéma d'architecture globale

Explication de lopération de séparation dynamique et statique Nginx

3. >1.Configuration du serveur NFS

2.Configuration du serveur Nginx

vim /etc/exports
/app/blog   10.10.0.0/24(ro,sync,root_squash,no_all_squash) # 只允许内网网段挂载,提高安全性。

cd /app/blog                                                # 将wordpress文件解压
tar  -xvf  wordpress-4.8.1-zh_CN.tar.gz

Tout d'abord, les deux Nginx et serveurs PHP Pour monter NFS. Réalisez un déploiement unifié et une gestion pratiquemontez 10.10.0.72:/app/blog /app/blog # Montez NFS/app/blog sur /app/blog local

puis configurez Nginx

Nginx c'est principalement la configuration de l'emplacement dans le serveur. Configurez l'emplacement pour transmettre le fichier se terminant par .php au serveur PHP. Donnez ceux se terminant par .jpg ou gif à Image. D'autres configurations peuvent être laissées par défaut.

3.Configuration du serveur PHP

vim /etc/nginx/nginx.conf
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile                on;
    tcp_nopush           on;
    tcp_nodelay             on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80 default_server;
        server_name  www.shuaiguoxia.com;
        index index.php index.html;
        root /app/blog;                                     # 根目录为挂载的NFS的挂载点
        include /etc/nginx/default.d/*.conf;
        location ~* \.php$ {                                # location匹配将php结尾的交给PHP服务器
                fastcgi_pass 10.10.0.22:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME /app/blog$fastcgi_script_name;
                include fastcgi_params;
        } 
        location ~* \.(jpg|gif)$ {                          # location匹配将图片交给Image处理
                proxy_pass http://10.10.0.23:80;            # Image服务器要开启web服务
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

PHP服务器的配置比较简单,主要讲PHP以FPM模式安装后进行简单的配置即可

yum install php-fpm php-mysql
vim /etc/php-fpm.d/www.conf
listen = 9000                                   # 只写监听端口,即监听所有IP
listen.allowed_clients = any                    # 允许所有IP进行访问。或者将这行注释。

4.MySQL服务器

yum install marirdb-server
/usr/local/mysql/bin/myhsql_secure_installation         #MySql初始化脚本,以下为每一项的翻译
  是否设置root密码
  输入密码
  确认密码
  是否设置匿名用户
  是否允许root远程登录
  删除test数据库
  现在是否生效
 
mysql -uroot -p 

create database wpdb;                                   # 创建wp数据库
grant all on wpdb.* to wpadm@'10.10.%' idenfied by 'centos';    # 授权用户。用户不存在系统会自动创建

5.Image服务器配置

yum install nginx                               # 安装Nginx
cd /app/image                                   # 将所有图片解压至此路径。图片的目录结构要保持原样
tar  -xvf  wordpress-4.8.1-zh_CN.tar.gz
 server {
        root      /app/image;                   # 仅仅修改根目录这一行即可。Httpd同理
        }                                       # 如果使用apache要注意在CentOS7下默认拒绝所有
nginx start                                     # 启动服务

6.配置wordpress

cp wp-config-sample.php wp-config.php           # 复制一个模板文件后改名作为主配置文件

vim wp-config.php
/** WordPress数据库的名称 */  
define('DB_NAME', 'wpdb');                      # wpdb为MySQL中创建的数据库

/** MySQL数据库用户名 */
define('DB_USER', 'wpadm');                     # wpadm为MySQL中授权的用户

/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');                # 授权用户的密码

/** MySQL主机 */
define('DB_HOST', '10.10.0.24');                # MySQL主机地址

至此配置就已经完成。达到了图片从图片服务器返回,静态nginx直接返回,动态交给PHP进行处理。

总结

1.前端Nginx要做好location匹配,将*.php与*.jpg等进行反向代理。

2.后端PHP服务器要修改配置文件,PHP自带配置文件只监听本地,且只允许本地访问

3.后端Image服务器,不论是apache还是Nginx要开启WEB服务。根目录要指向图片根目录,且根目录下的图片要与原本图片文件目录结构一致。

Recommandations associées :

Configuration du cas classique de séparation dynamique et statique Nginx

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn