nginx 虚拟主机、反向代理服务器及负载均衡,多台主机分离php-fpm实验
一、简介
本章介绍一些架构原理基础知识,
1.1、LNMP及php-fpm
请参考https://www.cnblogs.com/zhangxingeng/p/10242902.html
1.2、透明代理、反向代理,正向代理
请参考https://www.cnblogs.com/zhangxingeng/p/10331318.html
贴一张架构图
1.3、实现反向代理配置

1 server{
2 listen 80;
3 location /{
4 proxy_pass http:192.168.216.52:8080 #上游的应用服务器
5
6 }
7 }

1.4、负载均衡
nginx通过反代可以实现负载均衡的效果,上面是通过反向代理实现负载,所以nginx实现的是七层负载均衡,它能够识别http协议,根据http报文将不同类型的请求转发到不同的后端web服务器上,后端的web服务器称为“上游服务器”,即upstream服务器。架构图和上面类似配置如下:

1 upstream myweb{
2 server 192.168.216.53:8080;
3 server 192.168.216.54:8080;
4 }
5
6 server {
7 listen 80;
8 location /{
9 proxy_pass http://myweb;
10 }
11 }

1.5、nginx的反向代理有几种实现方式:
1)仅使用模块ngx_http_proxy_module实现简单的反向代理,指令为proxy_pass。
2)使用fastcgi模块提供的功能,反向代理动态内容,指令为fastcgi_pass。
3)使用ngx_http_memcached_module模块提供的功能,反向代理mencache缓存内容,指令为memcached_pass。
4)结合upstream模块实现更人性化的分组反向代理。
1.4.1、注意fastcgi_pass与proxy_pass的区别
1.6、虚拟主机
有的网站访问量大,需要负载,然而病逝所有网站都需要,对于访问量太小的可以将多个网站部署再同一台服务器上,比如你可以把www.test1.com 和www.test2.com两个网站部署再同一个服务器上,两个域名解析到同一个ip地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样

1 server {
2 listen 80 default_server;
3 server_name;
4 return 444; #过滤其他域名的请求,返回444状态码
5 }
6
7 server {
8
9 listen 80;
10 server_name www.test1.com;
11 location /{
12 proxy_pass http://localhost:8080
13 }
14 }
15
16 server {
17 listen 80;
18 server_name www.test2.com;
19 location /{
20 proxy_pass http://localhost:8081;
21 }
22 }

二、部署
2.1、配置简单的反代实验
2.1.1、架构
反向代理配置挺简单的,nginx-proxy(192.168.216.51)的配置不需要root、index等指令,只需要几个和代理相关的指令即可
2.2、部署web1-51,的反向代理配置
yum install nginx -y
修改配置

[root@www ~]# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name www.web1.com;
location ~ \.(png|jpg|jpeg|bmp|gif)$ {
proxy_pass http://192.168.216.53:80;
} location / {
proxy_pass http://192.168.216.54:80;
} location ~ \.(php|php5)$ {
proxy_pass http://192.168.216.52:80;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
[root@www ~]#

2.3、部署web3,图片服务器
安装httpd服务
yum install -y httpd
放两张图片后启动服务

1 [root@www html]# pwd
2 /var/www/html
3 [root@www html]# ll
4 total 340
5 -rw-r--r--. 1 root root 320660 Jun 7 2018 123.jpg
6 -rw-r--r--. 1 root root 21177 Feb 13 12:45 345.jpg
7 [root@www html]# systemctl restart httpd

验证,出错只显示一个小方块浏览器f12查看一下,文件大小明显不对,查看preview也不正常, 重新上传解决
正确效果图如下
2.3、部署静态服务器,同样是httpd
yum install -y httpd
1 [root@web4 html]# pwd
2 /var/www/html
3 [root@web4 html]# cat index.html
4 hi,this is web4,static
5 [root@web4 html]#
systemctl restart httpd
查看一下效果,没问题,下面部署nginx+php-fpm
2.3、部署nginx+php-fpm
两台分离部署
2.3.1、web2-52
yum install nginx -y
配置

1 [root@web2 html]# vim /etc/nginx/conf.d/default.conf
2
3 server {
4 listen 80;
5 server_name 192.168.216.52;
6 index index.html index.htm index.phpi;
7 root /www/web;
8 location / {
9
10 root /usr/share/nginx/html;
11 }
12
13 location ~.*\.php$ {
14
15 fastcgi_pass 192.168.216.55:9000;
16 fastcgi_index index.php;
17 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
18 include fastcgi_params;
19 }

systemctl restart nginx
2.3.2、web5-55
1 yum install -y php php-devel php-fpm php-mysql php-common php-devel php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel

vim /etc/php-fpm.d/www.conf listen = 192.168.216.55:9000 listen.owner = nobody
listen.group = nobody user = nginx group = nginx

1 mkdir -p /www/web/
2 group -g 983 nginx
3 groupadd -g 983 nginx
4 useradd -u 983 -g nginx nginx
5
6 chown -R nginx:nginx /www
准备phpinfo文件

1 [root@web5 web]# ll
2 total 4
3 -rwxrwxrwx 1 nginx nginx 21 Feb 12 12:35 index.php
4 [root@web5 web]# cat index.php
5 <?php
6 phpinfo();
7 ?>
8 [root@web5 web]#

注意:如果测试结果为不运行php,下载php得话,应该是nginx配置文件目录配置不当造成得
检查结果,成功
2.4、负载均衡配置
这个实验得负载均衡再nginx主机负载php请求,做两个php-fpm的负载均衡
修改web2-52的nginx配置文件

1 [root@web2 web]# cat /etc/nginx/conf.d/default.conf
2 upstream php-cluster {
3 server 127.0.0.1:9000 max_fails=3 fail_timeout=10s;
4 server 192.168.216.55:9000 max_fails=3 fail_timeout=10s;
5 }
6
7 server {
8 listen 80;
9 server_name 192.168.216.52;
10 index index.html index.htm index.phpi;
11 root /www/web;
12 location / {
13
14 root /usr/share/nginx/html;
15 }
16
17 location ~.*\.php$ {
18
19 fastcgi_pass php-cluster;
20 fastcgi_index index.php;
21 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
22 include fastcgi_params;
23 }
24 }
25 [root@web2 web]#

并且安装php,php-fpm
1 yum install -y php php-devel php-fpm php-mysql php-common php-devel php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel
配置php-fpm配置文件
1 [root@web2 web]# vim /etc/php-fpm.d/www.conf
2 listen = 127.0.0.1:9000
3 listen.owner = nobody
4 listen.group = nobody
5 user = nginx
6 group = nginx
创建index.php文件
mkdir -p /www/web
vim /www/web/index.php
1 [root@web2 web]# cat index.php
2 <?php
3 echo ("52"); #输出52,测试的时候容易分辨
4 phpinfo();
5 ?>
web5-55同样输出55
1 [root@web5 web]# vim index.php
2
3 <?php
4 echo ("55");
5 phpinfo();
6 ?>
好了,重启服务测试一把
systemctl restart nginx #web2
systemctl restart php-fpm #web2与web5
测试效果如下
刷新浏览器
nginx 虚拟主机、反向代理服务器及负载均衡,多台主机分离php-fpm实验的更多相关文章
- 简单聊聊不可或缺的Nginx反向代理服务器--实现负载均衡【上篇】
今天又是新的一周,我养足了精神去对待新一周的工作,但是今天到公司发现还是有一点空闲时间的,所以就想与之前接触过的Nginx再交往得更深一点儿. 什么是Nginx: Nginx是一款高性能的http服务 ...
- Nginx代理与反向代理、负载均衡实
通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力:同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度 ...
- Nginx代理与反向代理、负载均衡实践
通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力;同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度 ...
- nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken
nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...
- nginx详解反向代理、负载均衡、LNMP架构上线动态网站
简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.N ...
- Nginx服务器 之反向代理与负载均衡
一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理.正向代理的特点:就是我们明确知道要访问哪个网站地址. 反向代理: 客户端想获 ...
- Nginx的upstream反向代理、负载均衡详解
这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式. 正向代理最大的特点是客户端非常明 ...
- 循序渐进nginx(二):反向代理、负载均衡、缓存服务、静态资源访问
目录 反向代理 使用 1.创建代理目标服务端: 2.配置nginx反向代理目标服务端: 3.测试使用: 负载均衡 使用 1.准备服务端 2.修改nginx配置 3.测试 负载均衡策略 负载均衡的额外参 ...
- 使用Nginx实现服务器反向代理和负载均衡
前言 同事总问我Nginx做反向代理负载均衡的问题,因此特意留下一篇扫盲贴! 直接部署服务器的风险 假设,我开发了一个网站,然后买了一台Web服务器和一台数据库服务器,直接部署到公共网络上.如下图,网 ...
随机推荐
- MFC程序显示控制台输出
有的时候,我们用c写的一些东西,可能需要MFC作为UI输入参数进行测试,但是程序里有大量的printf操作,这就需要MFC程序启动的时候同时打开 一个控制台,用于标准输出 查询网络,大致方法有以下两种 ...
- Ubuntn16.04.3配置root权限及启用root用户
景 如果你是测试环境需要在VM中装了Ubuntn,安装完成后会创建一个Ubuntn的默认用户,默认用户因为权限的问题很多系统的配置文件不可以打开,默认是只读状态. 那么可以通过以下两种方式切换到roo ...
- ubuntu16.04安装chrome
方法1: 到 https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 下载最新的安装文件. 然后使用cd命令 ...
- js面向对象1
1.在空白的Object上加属性和方法: <script type="text/javascript"> function createPerson(name, qq) ...
- JavaScript之图片操作7
前面总结了很多了有关于图片操作的案例,本次是基于前面的基础,做一个综合的图片轮播效果,需要实现以下功能: 没有任何操作时,图片自动轮播 鼠标悬浮时,图片停止轮播:当鼠标移开,轮播继续 鼠标悬浮时,出现 ...
- Java-Runoob-高级教程-实例-方法:09. Java 实例 – continue 关键字用法-un
ylbtech-Java-Runoob-高级教程-实例-方法:09. Java 实例 – continue 关键字用法 1.返回顶部 1. Java 实例 - continue 关键字用法 Java ...
- docker下centos安装ping命令
https://blog.csdn.net/king_gun/article/details/78423115 [问题] 从docker hub上拉取到则镜像centos:6.7在执行ping命令是报 ...
- chrome不好用
(也是写于很久很久以前) 因为工作的某些原因,我本来想换Google chrome作为默认浏览器,真正用它的时候,才发现它一点都不好用,首先它很多网站不支持或显示不完整,比如新浪邮箱,打开新浪邮箱只显 ...
- Ajax中最有名axios插件(只应用于Ajax)(post方法,官网写错了,应是字符串格式)
/* axios v0.18.0 | (c) 2018 by Matt Zabriskie */!function(e,t){"object"==typeof exports&am ...
- Jmeter(二十三)Jmeter-Question之“批量造数据”
日常工作中,无论是在做功能测试.接口测试还是性能测试,经常会有这么一个场景出现,“那个谁谁谁,帮我加几条订单”,“那个某某某,给购物车增添几个产品”,“在数据库加几百条数据”...等等,通常少数量,或 ...