实战 | 一文带你读懂Nginx反向代理
一个执着于技术的公众号
前言
在前面的章节中,我们已经学习了nginx基础知识:
今天我们通过两个实例,带大家读懂nginx反向代理
Nginx反向代理实例 1
1、实现效果
打开浏览器,在地址栏输入地址www.test.com,跳转到百度首页。
2、准备工作
(1)在Linux系统安装nginx
1)创建用于运行Nginx的用户
useradd -M -s /sbin/nologin nginx
2)下载nginx软件包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
3)解压
tar -xf nginx-1.18.0.tar.gz -C /usr/src
4)configure
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module
参数说明:
--user=nginx:指定nginx程序运行用户
--group=nginx:指定nginx程序运行用户组
--prefix=/usr/local/nginx:指定安装路径
--with-http_ssl_module:开启nginx的SSL模块来支持HTTPS访问
5)编译安装
make -j 4 && make install
6)给nginx命令做个软链接,以便PATH能找到
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
7)本次实验nginx版本
[root@qll251 ~]# nginx -v
nginx version: nginx/1.18.0
(2)编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
server_name:监听访问的域名;
proxy_pass URL:把请求转发到指定URL
(3)重启nginx服务
如果出现以上报错,说明Nginx未开启SSL模块,解决方案:
在安装编译时,需配置ssl支持
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module
重启nginx服务:
nginx -s stop && nginx
(4)Windows hosts文件修改
在Windows的hosts文件中进行域名和ip对应关系的配置
3、访问测试
如果您在实验过程中遇到如下报错:
出现上面的问题,原因是nginx 没办法监听本地不存在的ip地址。
解决方法是在/etc/sysctl.conf 中加入如下内核参数配置
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
sysctl -p
4、访问过程分析
Nginx反向代理实例 2
1、实现效果
使用nginx反向代理,根据访问路径跳转到不同端口的服务中:
本次nginx反向代理中使用
9001端口访问http://10.43.187.251:9001/edu/,直接跳转转至127.0.0.1:8080
访问http://10.43.187.251:9001/vod/,直接跳转转至127.0.0.1:8081
2、准备工作
(1)部署两个tomcat服务器
tomcat依赖java运行环境,因此先完成jdk环境变量的配置
1、下载jdk
wget http://big.gxkjbg.com:8080/201704/tools/jdk-linux-x64.tar.gz
tar -zxvf jdk-linux-x64.tar.gz -C /usr/src/
ls /usr/src/jdk1.8.0_131/
2、编辑环境变量
vim /etc/profile
export JAVA_HOME=/usr/src/jdk1.8.0_131
export JAVA_BIN=/usr/src/jdk1.8.0_131/bin
export PATH=${JAVA_BIN}:$PATH
export CLASSPATH=.:{JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
3、使环境变量立即生效
source /etc/profile
4、检查java版本
[root@qll251 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@qll251 ~]#
(2)启动2个tomcat服务
1、下载免安装版Tomcat
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.54/bin/apache-tomcat-8.5.54.tar.gz
2、创建两个文件夹
mkdir /usr/src/tomcat8080
mkdir /usr/src/tomcat8081
3、解压
tar -zxvf apache-tomcat-8.5.54.tar.gz -C /usr/src/tomcat8080
tar -zxvf apache-tomcat-8.5.54.tar.gz -C /usr/src/tomcat8081
4、启动tomcat1
[root@qll251 ~]# cd /usr/src/tomcat8080
[root@qll251 tomcat8080]# ./apache-tomcat-8.5.54/bin/startup.sh
5、启动tomcat2
由于tomcat1使用8080默认端口,防止端口冲突,我们修改下tomcat2端口:
[root@qll251 ~]# cd /usr/src/tomcat8081
[root@qll251 tomcat8081]# vim apache-tomcat-8.5.54/conf/server.xml
22 <Server port="8015" shutdown="SHUTDOWN">
69 <Connector port="8081" protocol="HTTP/1.1"
启动tomcat2:
[root@qll251 tomcat8081]# ./apache-tomcat-8.5.54/bin/startup.sh
(3)检测tomcat端口已正常启动
(4)创建测试访问页面
1、在tomcat1中创建a.thml文件
[root@qll251 ~]# cd /usr/src/tomcat8080
[root@qll251 tomcat8080]# cd apache-tomcat-8.5.54/webapps/
[root@qll251 webapps]# mkdir edu
[root@qll251 webapps]# echo "<h1>8080!</h1>" > edu/a.thml
2、在tomcat2中创建a.thml文件
[root@qll251 ~]# cd /usr/src/tomcat8081
[root@qll251 tomcat8081]# cd apache-tomcat-8.5.54/webapps/
[root@qll251 webapps]# mkdir vod
[root@qll251 webapps]# echo "<h1>8081!</h1>" > vod/a.thml
(5)编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
3、最终测试
使用nginx反向代理功能实现了访问两个tomcat服务的需求
解释一下
本周因家中有事,停止更新了一周,在这里向读者朋友们致歉。现已处理完毕,即日起继续为大家分享好文章,愿与大家一起学习,共同进步。期待与您相遇~
往期精彩
◆ LVM逻辑卷学习
实战 | 一文带你读懂Nginx反向代理的更多相关文章
- 一文带你读懂什么是vxlan网络
一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...
- 一文带你读懂zookeeper在大数据生态的应用
一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...
- 谁说前端不需要懂-Nginx反向代理与负载均衡
转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...
- 从源码入手,一文带你读懂Spring AOP面向切面编程
之前<零基础带你看Spring源码--IOC控制反转>详细讲了Spring容器的初始化和加载的原理,后面<你真的完全了解Java动态代理吗?看这篇就够了>介绍了下JDK的动态代 ...
- 【并发编程】一文带你读懂深入理解Java内存模型(面试必备)
并发编程这一块内容,是高级资深工程师必备知识点,25K起如果不懂并发编程,那基本到顶.但是并发编程内容庞杂,如何系统学习?本专题将会系统讲解并发编程的所有知识点,包括但不限于: 线程通信机制,深入JM ...
- 一文带你读懂 Mysql 和 InnoDB存储引擎
作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL.PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系 ...
- 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?
摘要:近日,华为云数据库业务总裁苏光牛在ACMUG中国MySQL用户组主办的 "华为云专场" 技术沙龙中分享了华为云数据库重磅新品GaussDB的核心能力与竞争优势.那么, Gau ...
- 一文带你读懂什么是docker
一 简介 1.了解Docker的前生LXC LXC为Linux Container的简写.一种轻量级的内核虚拟化技术,隔离进程和资源. Linux Container有点像chroot,提供了一个拥有 ...
- SLAM到底是什么?一文带你读懂SLAM
SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”,主要用于解决机器人在未知环境运动时的定位与地图构建问题,为了让大家更多的了解SLAM, ...
随机推荐
- C++中类所占的内存大小以及成员函数的存储位置
类所占内存的大小是由成员变量(静态变量除外)决定的,虚函数指针和虚基类指针也属于数据部分,成员函数是不计算在内的.因为在编译器处理后,成员变量和成员函数是分离的.成员函数还是以一般的函数一样的存在.a ...
- 【C语言】预处理、宏定义、内联函数
一.由源码到可执行程序的过程 1. 预处理: 源码经过预处理器的预处理变成预处理过的.i中间文件 1 gcc -E test.c -o test.i 2. 编译: 中间文件经过编译器编译形成.s的汇编 ...
- 9_根轨迹_Part3_分离点/汇合点和根的性质
- Flex 布局新旧混合写法详解(兼容微信)
flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...
- 小程序TAB列表切换内容动态变化,scrollview高度根据内容动态获取
滑动tab选项卡 一.在小程序里面tab选项卡是用的是自带的swiper组件,下面直接上代码 <view class="container"> <view cla ...
- 修改Menu_item的字体属性
前面一直在找 MenuItem的文字颜色的设置.我发现API中只有背景颜色的设置... 所以找到下面的方法.在OverFlow上看到的.在onCreateOptionsMenu中覆写一下, 使Menu ...
- js判断是否为电话号码
/* 用途:检查输入字符串是否符合国内固话或者传真格式 输入: s:字符串 格式例如:030-4557777返回: 如果通过验证返回true,否则返回false */ function isTel( ...
- JavaScript实现带正则表达式的表单校验(校验成功后跳转)
运行结果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...
- UML中类关系表示与Java代码中的对应关系
UML中类关系表示与Java代码中的对应关系 1. 类的UML表示法 上图中,Employee 类有两个String类型的私有属性和一个返回值为String类型public 方法 getName(); ...
- @RequestBody和@RequestParam注解以及返回值,ajax相关知识点
关于前后端传递json数据这块查了好多资料,好多地方还是不清楚,先记录一下清楚的地方. 如果我们前端使用ajax发json数据,一般都加上contentType:'application/json;c ...