修改本地hosts文件,修改完成后,我们便可以通过:8080访问到第一步的初始化页面。那么如何只需要输入 便可以跳转到第一步的初始界面呢?便用到 nginx的反向代理。
# nginx test 127.0.0.1
在default.conf配置文件中增加如下配置
监听80端口,访问域名为,访问该域名时会被nginx代理到192.168.0.107:8080路径上。
server { listen 80; listen [::]:80; server_name ; location / { # 将真实的客户端信息转发到服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass :8080; } }
访问结果
5.2 实例2
我们再起一个后台服务teacher,其端口为8081且上下文地址为teacher,启动后直接在地址栏上访问localhost:8081/teacher,返回I am teacher
student服务添加上下文地址student,启动后的访问地址为localhost:8080/student
在 default.conf配置文件中增加如下配置
server { listen 80; listen [::]:80; server_name ; location ^~ /student/ { # 将真实的客户端信息转发到服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass :8080; } location ^~ /teacher/ { # 将真实的客户端信息转发到服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass :8081; } }
访问结果
6. 负载均衡 实现效果:用户通过nginx访问student集群服务,通过负载策略将请求分发到不同的服务上。
6.1 实例
通过idea设计器实现copy两个启动类的配置,并且将端口设置为动态传入,通过启动配置的环境变量传入8081 和 8083 两个端口,实现student服务的伪集群进行测试。
修改default.conf配置文件
通过添加upstream模块实现负载功能。
upstream stu-server { server 192.168.0.107:8081; server 192.168.0.107:8083; } server { listen 80; listen [::]:80; server_name ; location ^~ /student/ { # 将真实的客户端信息转发到服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass ; } }
访问结果
6.2 负载策略官方文档地址
1. Round Robin (default)轮询 - 请求在服务器之间平均分配,同时考虑了服务器权重。默认情况下使用此方法(没有启用它的指令)
upstream backend { server backend1.example.com; server backend2.example.com; } 2. Least Connections最少连接 - 将请求发送到具有最少活动连接数的服务器,同时还要考虑服务器权重:
upstream backend { least_conn; server backend1.example.com; server backend2.example.com; } 3. IP HashIP哈希 -从客户端IP地址确定向其发送请求的服务器。在这种情况下,可以使用IPv4地址的前三个八位字节或整个IPv6地址来计算哈希值。该方法保证了来自相同地址的请求将到达同一服务器,除非该请求不可用。
upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; }