Nginx系列之 一 反向代理

Nginx系列之 一 反向代理_第1张图片

 目录

Nginx系列之 一 入门_开着拖拉机回家的博客-CSDN博

一、Nginx概述

二、反向代理

2.1 正向代理

2.2 反向代理

三、反向代理实战

3.1测试服务器

3.2 配置文件说明

3.3 反向代理实战案例一

1、目的

2、具体实现

3.4 反向代理实战案例二

1、目的

2、具体实现


入门文章

Nginx系列之 一 入门


一、Nginx概述


Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,在互联网项目中广泛应用。

Nginx系列之 一 反向代理_第2张图片

Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。


二、反向代理


2.1 正向代理


由于防火墙的原因,我们并不能直接访问谷歌,那么我们可以借助VPN来实现(或者是我们访问客户内网),这就是一个简单的正向代理的例子。这里你能够发现,正向代理“代理”的是客户端,而且客户端是知道目标的,而目标是不知道客户端是通过VPN访问的。

当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理,即反向代理“代理”的是服务器端,而且这一个过程对于客户端而言是透明的。

Nginx系列之 一 反向代理_第3张图片

2.2 反向代理


反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

Nginx系列之 一 反向代理_第4张图片


三、反向代理实战


3.1测试服务器


我准备了两台测试服务器一台作为Nginx 服务器,、另一台 作为Tomcat 服务器。

IP

组件

端口

192.168.2.211

Tomcat

8080

192.168.2.154

Nginx

80

3.2 配置文件说明


https块是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。后面的反向代理、动静分离、负载均衡都是在这部分中配置。

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
    }
}
  • http 全局块:http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
  • server 块:这块和虚拟主机有密切关系,从用户角度看,虚拟主机和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。而每个server块也分为全局server块,以及可以同时包含多个locaton块。

3.3 反向代理实战案例一


1、目的

目的:在浏览器地址栏输入地址 www.kangll.com 跳转 Linux 系统 Tomcat 主页面。

2、具体实现

先配置 Tomcat,此处不赘叙,可以在 Windows 访问:

Nginx系列之 一 反向代理_第5张图片

修改之前,访问Nginx默认页面:

Nginx系列之 一 反向代理_第6张图片

通过修改Linux hosts文件,将 www.kangll.com 映射到 192.168.2.154(Nginx服务器)

192.168.2.154 hdp105 www.kangll.com 

nginx.conf配置如下:

http {
  ...
  server {
        listen       80;             # 监听80端口
        server_name  www.kangll.com; # 基于名称或者IP的虚拟主机配置

        location / {                 # 用于匹配 URL
            # 该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式
            proxy_pass http://192.168.2.211:8080;
            index  index.html index.jsp;  # 该指令用于设置网站的默认首页
        }
  }
  ...
}

如上配置,Nginx监听80端口,访问域名为 www.kangll.com (不加端口号时默认为 80端口),请求转到 proxy_pass 配置的对应服务器上。

成功访问

Nginx系列之 一 反向代理_第7张图片

3.4 反向代理实战案例二


1、目的


目标:一个server 中配置两个location,根据访问的路径跳转到不同端口的服务中。

  • 访问 http://www.kangll.com:9666/edu/ 直接跳转到 192.168.2.211:8082
  • 访问 http://www.kangll.com:9666/vod/ 直接跳转到 192.168.2.211:8083

2、具体实现


准备:配置两个 Tomcat,端口分别为 8082 和 8083,都可以访问,对应端口修改配置文件即可。

Tomcat1启动

Nginx系列之 一 反向代理_第8张图片

8082端口 Tomccat启动成功

Nginx系列之 一 反向代理_第9张图片

Tomcat2启动

Nginx系列之 一 反向代理_第10张图片

8083端口 Tomccat启动成功

Nginx系列之 一 反向代理_第11张图片

配置 html 页面

apache-tomcat-8.5.87-8082/webapps/edu/a.html  输入
hello, 8082-Tomcat!

apache-tomcat-8.5.87-8083/webapps/edu/b.html  输入
hello, 8083-Tomcat! 

访问Tomcat

192.168.2.211:8082/edu/a.html
192.168.2.211:8083/vod/b.html

Nginx系列之 一 反向代理_第12张图片

Nginx系列之 一 反向代理_第13张图片

配置反向代理nginx.conf 配置如下:

http {
  ...
  server {  # 虚拟主机,可以配置多个                
        listen       9666;   # 用于配置网络监听IP或者端口
        server_name  www.kangll.com; #基于主机名或者IP虚拟主机配置

        location /edu/ {  # 路径/edu/ 匹配之后,去匹配相应的网页
            # 该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式
            proxy_pass http://192.168.2.211:8082;
            root  a.html;
        }
        location /vod/ {  # 路径/edu/ 匹配之后,去匹配相应的网页
            proxy_pass http://192.168.2.211:8083;
            root  b.html;    # 文件根目录
        }

   }
   ...
}

一个 server 块可以配置多个 location 块。location 块:基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。

通过 kangll.com:9001/edu/a.html 访问 Tomcat-8082

Nginx系列之 一 反向代理_第14张图片

通过 kangll.com:9001/vod/b.html 访问 Tomcat-8083

Nginx系列之 一 反向代理_第15张图片

 nginx access.log 日志打印

客户端服务器192.168.2.96 访问页面是 b.html ,请求到 Nginx 代理的服务器www.kangll.com:9666 ,请求的状态 200。

192.168.2.96 - - [15/Jul/2023:20:17:37 +0800] "GET /vod/b.html HTTP/1.1" www.kangll.com:9666 200 20 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "-"


参考:

https://www.cnblogs.com/ysocean/p/9392908.html

神器 Nginx 的学习手册 ( 建议收藏 )

https://github.com/aminglinux/nginx/blob/master/proxy/bu_ca.md

你可能感兴趣的:(Linux,nginx,http块,server_name,反向代理,location块)