实战 | 一文带你读懂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, ...
 
随机推荐
- 什么是 spring?
			
Spring 是个 java 企业级应用的开源开发框架.Spring 主要用来开发 Java 应用, 但是有些扩展是针对构建 J2EE 平台的 web 应用.Spring 框架目标是简化 Java 企 ...
 - input 输入框只能输入数字,一行代码解决,兼容谷歌 火狐
			
<input id="mobile" name="mobile" type="text" onkeyup="this.val ...
 - Creating a File View
			
创建文件视图 为了映射一个文件的数据到进程的虚拟内存,你必须创建一个文件的视图.MapViewofFile和MapViewofFileEX使用CreateFileMapping返回的句柄,在虚拟地址空 ...
 - D3.js中国地图下钻
			
使用d3.js实现中国地图及中国地图下钻到省市区 在可视化开发中,地图是很重要的一个环节,很多时候需要展现的不仅是国家地图,还需要能从国家进入到省市,看到区这样的下钻过程,今天我们就来实现这个效果. ...
 - 如何跨线程访问Winform中的UI元素
			
如何跨线程访问Winform中的UI元素 假如制作一个Socket聊天应用程序,很可能会用到多线程: 例如为Receive方法开辟单独一个线程,例如为Receive方法开辟单独一个线程(后台运行的线程 ...
 - java中抛出throw关键字是怎么用的? 举例?
			
5.抛出throw关键字 马克-to-win:我们先说5/0的原理,当程序运行到5/0的时候,java系统JVM会在后台new出一个除0异常实例,之后把这个实例传入catch块儿供开发者使用.马克-t ...
 - 在IntelliJ IDEA配置Tomcat
			
1,点击Run---EDit Configurations... 2.点击左侧"+"号,找到Tomcat Server---Local(若是没有找到Tomcat Server 可以 ...
 - 彻底理解synchronized
			
1. synchronized简介 在学习知识前,我们先来看一个现象: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public ...
 - EMS查看单个邮箱的已用空间
			
Exchange查询单个邮箱用户使用状态. 查看用户"wsj"的邮箱使用状态 键入以下命令: Get-MailboxStatistics wsj | FL DiplayName,T ...
 - JavaScript面向对象的方式开发轮播图插件
			
轮播图是很多页面必不可少的组件.这里来使用面向对象方式开发一个插件.减去开发的痛楚 首先需要寻找对象:只有一个对象,轮播图!关键点在于找到这个对象所拥有的属性以及方法,通过代码实现出来,这是面向对象最 ...