分分钟搞懂并实现Nginx反向代理!


前言:本篇文章涉及的的知识点有:CentOS7基本命令、docker常用操作、容器数据卷、端口绑定和域名绑定、反向代理,如果与本文使用的是不同操作系统以及不同方法也没有关系,可以通过观看文章目录来了解反向代理大致需要哪些步骤。

1、概念

在实现反向代理之前,我们首先要知道什么是正向代理,通过他们之间的差异来理解其作用

1.1、正向代理

如图所示:

在这里插入图片描述

不难看出,在上面的例子中,局域网内的PC机将请求发送给代理服务器,然后代理服务器再将请求转发至Internet

1.2、反向代理

在这里插入图片描述

不难看出,上面的例子中,从Internet过来的请求会首先经过代理服务器,然后再根据代理服务器来判断返回哪一个网站

1.3、两者对比

类型 区别
正向代理 代理客户端,统一转发请求
反向代理 代理服务器端,统一分配请求

2、Nginx代理服务器

2.1、安装Nginx镜像

1.搜索nginx镜像

docker search nginx

2.拉取nginx镜像(再次之前需要通过配置源来提高docker下载镜像的速度,具体请自行百度)

docker pull nginx

2.2、准备Nginx相关配置

1.在 /root目录下创建nginx目录,用于存储nginx数据信息

mkdir ~/nginx

2.进入目录

cd ~/nginx

3.nginx目录下创建conf.d目录(用于存放反向代理相关的配置文件)

mkdir conf.d

4.conf目录下创建配置文件nginx.conf(两个方法二选一)

vi nginx.conf

vim nginx.conf

5.添加如下配置内容

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
    
    
	worker_connections 1024;
}
http {
    
    
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	
	log_format main 	'$remote_addr - $remote_user [$time_local] "$request" '
						'$status $body_bytes_sent "$http_referer" '
						'"$http_user_agent" "$http_x_forwarded_for"';
						
	access_log /var/log/nginx/access.log main;
	
	sendfile on;
	#tcp_nopush on;
	
	keepalive_timeout 65;
	#gzip on;
	include /etc/nginx/conf.d/*.conf;
}

7.nginx目录下创建conf目录(存放nginx配置信息)

mkdir conf

8.conf.d目录下创建proxy.conf配置文件(反向代理相关配置)

upstream tomcat-test {
    
    
	server 192.168.181.5:8080;
}

server {
    
    
	listen	80; #port
	server_name	www.proxy.com; #host
	location / {
    
    
		proxy_pass http://tomcat-test;
		index index.html;
	}
}

配置文件解释说明(ip需要根据自己虚拟机的ip来进行更改):

在这里插入图片描述

2.3、创建容器

1.创建容器,并设置端口、目录映射(在nginx目录下)

docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

稍微解释一下上面的配置文件:

-p命令的作用是将虚拟机的端口与容器的端口进行绑定

-v命令的作用是使虚拟机与容器共享同一个目录,$PWD表示当前目录,被共享的目录是在虚拟机中的,并不是在容器中(可以学习一下数据卷的相知识)

3、Tomcat测试服务器

3.1、安装镜像

1.搜索tomcat镜像

docker search tomcat

2.拉取tomcat镜像

docker pull tomcat

3.2、创建tomcat容器以及目录

1.在/root目录下创建tomcat目录(用于存放html文件)

mkdir ~/tomcat
cd ~/tomcat

2.创建并编辑index.html文件(一会儿用于展示的html页面)

vi index.html

输入一下测试内容

this is index.html port=8080!!!! 

3.创建容器,设置端口、目录映射

docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat

4、 主机进行域名映射的相关配置

如下图:

在这里插入图片描述

现在我们想要的是通过 www.proxy.com这个域名来访问nginx代理服务器,代理服务器的ip地址是192.168.181.5,为了使浏览器能够识别这个域名,我们需要在电脑的配置文件中进行设置

本文以weindows操作系统为例,其他操作系统需自行百度

windows系统的域名映射文件是C:\Windows\System32\drivers\etc目录下的hosts文件

在这里插入图片描述

文件中添加如下信息:

192.168.181.5 www.proxy.com

hosts文件在作用相当于一个DNS服务器,把你发送的www.proxy.com解析成192.168.181.5这个ip地址

5、测试效果

重启tomcat以及nginx

docker restart c_nginx
docker restart c_tomcat

访问www.proxy.com后可以看到如下效果
在这里插入图片描述
创作不易,若有收获还请点赞鼓励一下,若有问题还请指出,共同进步,共同学习~ ^_^

猜你喜欢

转载自blog.csdn.net/weixin_44829930/article/details/109005883