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