实验:基于nginx反向代理的lnamp搭建WordPress,并实现动静分离

一、实验环境:

1.各软件版本:

系统版本:CentOS Linux release 7.4.1708 (Core)
php版本:PHP 7.2
nginx版本:nginx-1.12.2
数据库版本:MariaDB 10
WordPress版本:4.9.4
关闭防火墙与selinux

2.实验架构及IP分配:

nginx反向代理一台:
IP:192.168.1.105 10.66.16.111安装nginx
nginx WEB服务器一台
IP:10.66.16.11 安装nginx
Apache+PHP服务器一台
IP:10.66.16.22 安装httpd+PHP
MySQL服务器一台
IP:10.66.16.33 安装MariaDB

3.默认各服务器已安装好所需软件,不再详述安装过程。

>PS:要注意的一点时,在以前安装PHP解析环境时都是用的nginx+php,他们之间是通过php-fpm(fastcgi协议)通
>信的,在安装PHP时安装php72w-fpm这个依赖包,因为nginx与PHP之间只能以这种方式通信,但httpd与PHP可以
>通过mod方式进行通行,所以AP组合需要安装mod_php这个依赖包,httpd便能解析php了,虽然httpd也能通过
>php-fpm来解析PHP,但需要另外配置。

二:测试
1.nginx WEB服务器:
在10.66.16.11上安装完nginx并启动服务后,创建测试html文件
vim /usr/share/nginx/html/test.html

<h1>nginx web server</h1>

浏览器输入10.66.16.11/test.html并显示以下页面
2.Apache+PHP服务器
在10.66.16.22上安装完成Apache+PHP并启动服务后,创建phpinfo测试文件
vim /var/www/html/phpinfo.php

<?php
   phpinfo();
?>   

浏览器输入10.66.16.22/phpinfo.php并显示以下界面就说明Apache可以正常解析PHP文件了。
3.测试nginx反向代理功能,其实配置起来非常简单。
vim /etc/nginx/conf.d/proxy.conf

server {
        listen 80;
        server_name www.ready.cn;
        index index.php;
        location / {
                }
        location ~* \.(png|jpg|jepg|gif|bmp|html)$ {
                proxy_pass http://10.66.16.11;
                }
        location ~* \.php$ {
                proxy_pass http://10.66.16.22;
                }
}

本机的hosts文件添加本地域名重定向规则192.168.1.105 www.ready.cn
systemctl start nginx #启动nginx服务
在浏览器分别输入http://www.ready.cn/test.html和http://www.ready.cn/phpinfo.php并显示与测试步骤1,2相同的界面就说明nginx以作为反向代理工作了
4.配置数据库
mysql_secure_installation #初始化数据库,设置root密码,匿名用户权限等
mysql -uroot -p123456 #登入数据库进行用户及库的创建与配置
>GRANT ALL PRIVILEGES ON *.* TO ‘mysql‘@‘%‘IDENTIFIED BY ‘123456‘ WITH GRANT OPTION; #创建账户mysql,密码为123456,并允许任意IP访问此账户数据库,权限为ALL
>CREATE DATABASE wordpress; #创建名为wordpress的库,安装完WordPress后会要求在数据库创建库,这里事先创建好
>quit
将下载好的WordPress放入nginx反向代理服务器,nginx服务器,AP服务器相应的主目录,具体过程这里不再赘述。具体可参考另外两篇博文。

三:对nginx反向代理服务器做功能补充与优化
虽然以上步骤完成后已经可以成功的将动态与静态内容分离到后端不同服务器进行处理,但还需要优化使性能更完整。

1.启动proxy缓存功能
在proxy上编辑主配置文件
vim /etc/nginx/nginx.conf
在http模块下添加如下规则:
proxy_cache_path /data/nginx/cache levels=1:1:1 keys_zone=pcache:10m max_size=2g; #指定缓存目录为/data/nginx/cache,目录结构为3级,每级16个子目录,键表名为pcache大小为10m,缓存最大占用空间为2g,目录需手动创建
定义完缓存参数后,需要在定义的主机上调用缓存
vim /etc/nginx/conf.d/proxy.conf
    server {
        listen 80;
        server_name www.ready.cn;
        index index.php;
        proxy_cache pcache; #调用缓存
        proxy_cache_key $request_uri; #把什么当键
        proxy_cache_methods GET HEAD; #缓存哪些项
        proxy_cache_valid 200 302 10m; #指定200 302响应码的内容缓存10分钟
        proxy_cache_valid 404      1m; #指定404响应码的内容缓存1分钟
        proxy_cache_use_stale http_502; #允许502响应码的内容使用过期缓存
        proxy_set_header X-Real-IP $remote_addr;  #将实际的客户端IP发送至后端服务器
        add_header X-Via $server_addr; #将代理服务器的IP发至后端服务器
        location / {
                proxy_pass http://10.66.16.22:80/;
                }
        location ~* \.(png|jpg|jepg|gif|bmp|html)$ {
                proxy_pass http://10.66.16.11:80;
                proxy_set_header X-Real-IP $remote_addr;  #将实际的客户端IP发送至后端服务器
                add_header X-Via $server_addr; #将代理服务器的IP发至后端服务器
                }
        location ~* \.php$ {
                proxy_pass http://10.66.16.22:80;
                proxy_set_header X-Real-IP $remote_addr;  #将实际的客户端IP发送至后端服务器
                add_header X-Via $server_addr; #将代理服务器的IP发至后端服务器
                }
}

四.用ab进行压测,比较开启缓存功能和没有开启缓存功能的区别

原文地址:http://blog.51cto.com/13322786/2161339

时间: 2024-08-28 20:14:59

实验:基于nginx反向代理的lnamp搭建WordPress,并实现动静分离的相关文章

基于Nginx反向代理及负载均衡

基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是开启的,因为proxy属于nginx内置标准模块,通常实现代理的时候,最核心模块是proxy_pass,用于将用户请求的rui递交至上游服务器的某个URI但这个模块大部分用于location当中,因此要实现将某一URI的访问代理某个上游服务器大致的格式为: location /name/ { pro

.net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行. 负载均衡,英文名称为Load

Nginx反向代理缓存服务器搭建

Nginx反向代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理.

Nginx 反向代理jar包搭建H5

1. 添加Nginx到YUM源Sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm2. 安装Nginxsudo yum install -y nginx3. 启动Nginxsudo systemctl start nginx.service如果一切进展顺利的话,现在你可以通过你的域名或IP来访问你的Web页面来预览一下Nginx的默认页面:4

Nginx反向代理+Tomcat+memcached实现session server

写在前面 前一篇文章为大家解释说明了会话的类型,今天这篇文章将带领大家一步一步实现一个简单的session server,主要是让大家理解session server的工作过程,当然了对于中小向站点,这个结构也完全够用了.本节主体结构: memcached-session-manager介绍 网络拓扑结构 Nginx反向代理配置 Tomcat配置 memcached配置 测试 错误分析 memcached-session-manager介绍 memcached-session-manager是一

搭建nginx反向代理用做内网域名转发

基于域名的7层转发的实现(NAT+反向代理) 在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难.一一对应关系也没有规律.访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下: Public IP Public Port Number Internal IP Internal Port Number Note 1.1.1.1 80 192.168.1.10

ubuntu 16.04利用docker搭建java+tomcat+nginx反向代理/动静分离

ubuntu 16.04利用docker搭建java+tomcat+nginx反向代理 新建两个docker容器 docker run -it --name Tomcat-mysql -v /mnt:/mnt -p 8866:80 -p 33006:3306 ubuntu /bin/bash docker run -itd --name webserver -p 8888:80 -v /mnt/:/mnt/ ubuntu /bin/bash [email protected]:~# docker

Nginx反向代理(基于目录动静分离、不同浏览器类型不同代理、基于扩展名的不同代理)

proxy_pass http_proxy_module proxy_pass指令输入ngx_http_proxy_module模块,此模块可以将请求转发到另外一台服务器 官网:http://nginx.org/en/docs/http/ngx_http_proxy_module.html =============================================== location /some/path/ { proxy_pass http://127.0.0.1; } ==

搭建Nginx反向代理做内网域名转发

由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 80 端口.非 80 端口的映射在访问的时候要域名加上端口,比较麻烦. 我们可以在内网搭建一个Nginx反向代理服务器,将Nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到Nginx反向代理服务器,利用Nginx反向代理将不同域名的请求转发到内网不