nginx实现动静分离(nginx与php不在同一个服务器)

使用wordpress-5.0.3-zh_CN.tar.gz做实验

Nginx服务器的配置:
[root@app ~]# tar xf wordpress-5.0.3-zh_CN.tar.gz
[root@app ~]# mv wordpress/* /data/nginx/php/
[root@app ~]# vim /apps/nginx/conf/conf.d/pc.conf
server {
   listen 80;
   server_name www.xxxpc.net;
   location / {
      root /data/nginx/php;       #指定静态资源的根,wordpress中的html文件和目录没有指定静态文件的具体位置,所以默认会去nginx的/下寻找静态资源
      index index.html;
   }
   location ~ .php$ {
      root /data/nginx/php;       #指定php服务器存放资源文件的根路径
      fastcgi_pass 192.168.38.37:9000;    #发现php后缀的资源,反向代理给指定IP和端口号的php服务器
      fastcgi_index index.php;    #php的默认站点页面
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  #告知php服务器用户请求的资源的绝对路径和资源名称
      include fastcgi_params;     #包含fastcgi_params文件中的所有参数
   }
}

php服务器配置:
[root@localhost ~]# tar xf wordpress-5.0.3-zh_CN.tar.gz 
[root@localhost ~]# mv wordpress/* /data/nginx/php/     #把wordpress移动到Nginx所指定的php服务器的动态资源路径下
[root@localhost ~]# cd /data/nginx/php/
[root@localhost php]# mysql
MariaDB [(none)]> grant all on wordpress.* to wordpress@'192.168.38.%' identified by 'centos';   #创建php连接数据库的用户和密码
MariaDB [(none)]> create database wordpress;   #创建wordpress用于存放数据的数据库
[root@localhost php]# cp wp-config-sample.php wp-config.php   #复制php连接数据库的配置文件
[root@localhost php]# vim wp-config.php    #修改一下php连接数据库的各种配置即可
[root@localhost php]# systemctl start php72-php-fpm

注:当Nginx和php不在同一台服务器时,Nginx和php各自服务器上都需要有wordpress的各种资源文件;因为用户请求的资源,只有动态资源才会往php服务器上转发,静态资源Nginx自己进行回复;所以如果php有wordpress资源,但是Nginx上没有,则会造成页面无渲染效果;反之,如果Nginx上有wordpress资源,php上没有,则会提示File not found.