目录
Nginx系列之 一 入门_开着拖拉机回家的博客-CSDN博
一、Nginx概述
二、反向代理
2.1 正向代理
2.2 反向代理
三、反向代理实战
3.1测试服务器
3.2 配置文件说明
3.3 反向代理实战案例一
1、目的
2、具体实现
3.4 反向代理实战案例二
1、目的
2、具体实现
入门文章
Nginx系列之 一 入门
一、Nginx概述
Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,在互联网项目中广泛应用。
Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。
二、反向代理
2.1 正向代理
由于防火墙的原因,我们并不能直接访问谷歌,那么我们可以借助VPN来实现(或者是我们访问客户内网),这就是一个简单的正向代理的例子。这里你能够发现,正向代理“代理”的是客户端,而且客户端是知道目标的,而目标是不知道客户端是通过VPN访问的。
当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理,即反向代理“代理”的是服务器端,而且这一个过程对于客户端而言是透明的。
2.2 反向代理
反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
三、反向代理实战
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默认页面:
通过修改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 配置的对应服务器上。
成功访问
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启动
8082端口 Tomccat启动成功
Tomcat2启动
8083端口 Tomccat启动成功
配置 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.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
通过 kangll.com:9001/vod/b.html 访问 Tomcat-8083
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