一、Nginx实现反向代理

概念

反向代理:在收到客户端请求之后,会修目标IP地址和端口

正向代理:在收到客户端请求之后,会修源IP地址和端口

上游服务器:代理服务器后端的哪些真正给客户端提供服务的节点,这样的服务器称之为上游服务器

下游服务器:客户端就是下游节点

模块:nginx_http_proxy_module

指令:

proxy_pass:指定上游服务器的ip和端口

proxy_set_header:指定在重新封装请求报文的时候,添加一个新的首部

部署步骤:

0.检查环境

1.安装服务

yum -y install nginx httpd php

2.配置httpd端口

vim /etc/httpd/conf/httpd.conf

###########

Listen 45678

############

3.启动httpd

systemctl start httpd

systemctl enable httpd

netstat -anp|grep httpd

4.修改Nginx配置文件

vim /etc/nginx/nginx.conf

########

删除默认的80端口server          #切记最后需要加一个}。

###############

cd /etc/nginx/conf.d

vim pass.conf

###########

server {

listen      80;

location / {

proxy_pass   http://127.0.0.1:45678;

}

}

###########

5.启动nginx

nginx -t              #进行语法检测

systemctl restart nginx

systemctl enable nginx

netstat -anp|grep nginx

firewall-cmd --add-port=80/tcp

firewall-cmd --add-port=80/tcp --permanent

6.浏览器验证

7.验证php

echo "<?php phpinfo(); ?>" > /var/www/html/index.php

8.浏览器验证

9.配置nginx网站

mkdir /nginx

echo "123" > /nginx/index.html

vim /etc/nginx/conf.d/pass.conf

###################

server {

listen      80;

location ~* \.php$ {

proxy_pass   http://127.0.0.1:45678;

}

location / {

root /nginx;

}

}

################

10.重启nginx

nginx -t

systemctl restart nginx

11.浏览器验证

IP/index.html

IP/index.php

补充一:

location如下:
location /admin {
proxy_pass http://www.ken.com/;
proxy_pass http://www.ken.com;
}
请求的url 是http://www.ken.com/admin/a.html
如果代理方式是 proxy_pass http://www.ken.com/; 那么去www.ken.com的根目录下找a.html,/代表完全代理。
如果代理方式是 proxy_pass http://www.ken.com; 那么去www.ken.com的根目录下的admin找a.html

补充二:

   如果location中使用了模式匹配(正则),那么,location中的url会直接补充到代理节点的后面.
此时,上游服务器的的后面不能有任何内容,包括 / location ~ \.php$ {
proxy_pass http://www.ken.com; [正则表达式proxy_pass转发的地址后面什么都不能加] <<< 正确写法
proxy_pass http://www.ken.com:80; <<< 正确写法
proxy_pass http://www.ken.com/; <<< 错误写法
proxy_pass http://www.ken.com/img; <<< 错误写法
} 此时,如果请求的url是 http://www.baidu.com/book/stu/a.php ,就会代理成 http://www.ken.com/book/stu/a.php

补充三:

    在location中如果有重定向的话,那么就用重定向后的uri替换掉代理节点中的uri
location / {
rewrite /(.*)$ /index.php?name=$1 break;
proxy_pass http://www.baidu.com:80/img;
} 此时,如果请求的url是 http://www.ken.com/bajie ,就会代理成 www.baidu.com/index.php?name=bajie

二、nginx实现负载均衡

概念:

1、概念

调度器:分发用户的请求到一个后端节点

上游服务器(真实服务器):每个真正用来处理用户请求的节点都是一个上游服务器

CIP:(client IP)客户端的IP地址

RIP:(real IP)真实服务器的IP地址

VIP:(virtual IP)虚拟IP,用户所看到的是也是虚拟IP

2、指令

指令:upstream

作用:定义一个上游服务器组

格式

upstream name {

server  上游服务器1  参数 参数;

server  上游服务器1  参数 参数;

server  上游服务器1  参数 参数;

3、参数

weight=#:设置服务器的权重(数字越大,权重越高)

backup:设置服务器处于备用状态(其他节点出现故障,备用节点才开始工作)

down:设置让一个节点处于离线状态(经常用在维护一个节点的情况下)

max_fails=number:设置连续几次转发失败就认为该节点出现故障,然后就不再向该节点转发用户请求了

fail_timeout=time:和上个参数组合使用,作用是设置等待上游服务器响应超时时间

实验:a.com、b.com、c.com

1.安装服务

yum -y install nginx

2.建立路径

mkdir -p /work/html_a

mkdir -p /work/html_b

echo "aaaaaaaaa" > /work/html_a/index.html

echo "bbbbbbbb" > /work/html_b/index.html

3.编辑配置文件

cd /etc/nginx/conf.d

vim ab.conf

###########################

server {

listen      80;

server_name a.com;

location / {

root /work/html_a;

}

}

server {

listen      80;

server_name b.com;

location / {

root /work/html_b;

}

}

server {

listen      80;

server_name c.com;

location / {

proxy_pass http://abc;

}

}

upstream abc {

server     127.0.0.1:81;

server     127.0.0.1:82;

}

server {

listen      81;

server_name a.com;

location / {

root /work/html_a;

}

}

server {

listen      82;

server_name b.com;

location / {

root /work/html_b;

}

}

########################

4.查错

nginx -t

5.重启服务

systemctl restart nginx

6.添加防火墙端口

firewall-cmd --add-port=80/tcp --permanent

firewall-cmd --reload

7.设置域名静态解析

echo "192.168.10.100 a.com" >> /etc/hosts

echo "192.168.10.100 b.com" >> /etc/hosts

echo "192.168.10.100 c.com" >> /etc/hosts

8.验证

curl a.com

curl b.com

curl c.com

三、反向代理和负载均衡的区别

1、反向代理proxy_pass后跟的是一个具体的IP地址,负载均衡proxy_pass后跟的是集群名;

2、反向代理代理到的是某一个特点的服务器,而负载均衡器是根据算法调度到集群中的某个节点上;

3、反向代理和负载均衡都可以使用模式匹配(正则)。

四、nginx启动错误

  利用nginx进行反向代理的时候,我们会配置proxy_pass。在启动nginx的时候,会报如下错误:

nginx: [emerg] host not found in upstream "xxx.com" in /usr/local/nginx/conf/vhost/yq.nginx.com.conf:19

  其实nginx配置语法上没有错误的,只是系统无法解析这个域名,所以报错.
解决办法就是添加dns到/etc/resolv.conf 或者是/etc/hosts,让其能够解析到IP。类似windows下的hosts文件的修改。

  具体步骤如下:

vim /etc/hosts

//修改hosts文件,在hosts文件里面加上一句:

127.0.0.1       localhost.localdomain   xxx.com

Linux服务之nginx服务篇三(反向代理、负载均衡)的更多相关文章

  1. 【05】Nginx:TCP / 正向 / 反向代理 / 负载均衡

    写在前面的话 在我们日常的工作中,不可能所有的服务都是简单的 HTML 静态网页,nginx 作为轻量级的 WEB 服务器,其实我们将它用于更多的地方还是作为我们网站的入口.不管你是后端接口,还是前端 ...

  2. nginx之rewrite重写,反向代理,负载均衡

    rewrite重写(伪静态): 在地址栏输入xx.com/user-xxx.html, 实际上访问的就是xxx.com/user.php?id=xxx rewrite就这么简单 附上ecshop re ...

  3. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  4. 反向代理负载均衡之nginx

    一.集群 1.1 什么是集群 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性 ...

  5. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

  6. Nginx 反向代理 负载均衡 虚拟主机配置

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  7. nginx 详解反向代理负载均衡

    什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...

  8. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  9. 【转】Nginx 反向代理 负载均衡 虚拟主机配置

    原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...

  10. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

随机推荐

  1. 那些你可能不知道的 ZooKeeper 知识

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...

  2. OO第四单元总结暨期末总结

    OO第四单元总结暨期末总结 目录 OO第四单元总结暨期末总结 第四单元三次作业架构与迭代 整体感受 HW1 HW2 HW3 四个单元架构设计与方法演进 Unit1 Unit2 Unit3 Unit4 ...

  3. SQL必知必会,带你系统学习

    你一定听说过大名鼎鼎的Oracle.MySQL.MongoDB等,这些数据库都是基于一个语言标准发展起来的,那就是SQL. SQL可以帮我们在日常工作中处理各种数据,如果你是程序员.产品经理或者是运营 ...

  4. 记一次metasploitable2内网渗透之1099端口

    RMI是REMOTE METHODINVOCATION的简称,是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用.一个RMI对象是一个远程JAVA对象,可以从另一个JAVA虚拟机上(甚至跨 ...

  5. 「HTML+CSS」--自定义加载动画【017】

    前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...

  6. manjaro找不到默认键盘布局

    1 问题描述 manjaro安装fcitx后,没有默认的键盘布局,不是这样: 而是: 2 解决方案 解决方案在启动fcitx时就已经有提示了: 缺少了libjson-c这个库,直接使用pacman搜索 ...

  7. Android Activity间跳转与传递数据

    1 概述 Activity之间的跳转主要使用 startActivity(Intent intent); startActivityForResult(Intent intent,int reques ...

  8. PowerBI开发 第十八篇:行级安全(RLS)

    PowerBI可以通过RLS(Row-level security)限制用户对数据的访问,过滤器在行级别限制数据的访问,用户可以在角色中定义过滤器,通过角色来限制数据的访问.在PowerBI Serv ...

  9. Selenium3自动化测试【14】元素定位之ID

    元素定位 Selenium需要告知其如何去定位元素,来模拟用户动作.例如要操作Bing搜索页. 首先要找到搜索框与搜索按钮: 通过键盘输入检索的关键字: 用鼠标单击搜索按钮: 提交搜索请求. Sele ...

  10. PE文件格式偏移参考

    在进行PE文件格式病毒分析的时候,经常要使用到PE文件格式的解析,尤其是对LoadPE形式的病毒的分析,经常要查看PE文件格式的偏移,特地从博客<PE文件格式的偏移参考>中转载收录一份,之 ...