使用场景
反向代理:一个网站由许多服务器承载的,网站只暴露一个域名,那么这个域名指向一个代理服务器ip,然后由这台代理服务器转发请求到网站负载的多台服务器中的一台处理。这就需要用到Nginx的反向代理实现了
负载均衡:由于大量访问一台负载服务器处理不过来,就需要多台服务器。大量请求经过Nginx反向代理,将请求均衡的分配到这些负载服务器,Nginx提供负载均衡的功能。
解决方案
nginx配置文件位置参考,或者nginx -V 查看 -conf-path=
Linux:在/etc/nginx/conf.d/中,修改default.conf文件
Windows:在 nginx安装目录\Nginx\conf中,修改nginx.conf
注意原本的nginx.conf中没有stream模块(据说v1.8.x以后的版本才有,我的是v1.5.11就没有),需要自行添加。且它的层级和http模块是同级的
# HTTP模块: HTTP模块主要用于处理HTTP和HTTPS流量。它可以接收HTTP请求、代理HTTP请求到后端服务器、负载均衡、缓存和处理HTTPS加密等。HTTP模块是Nginx最常用的模块之一,通常用于构建Web服务器或反向代#理服务器。
# Stream模块 : Stream模块用于处理通用TCP和UDP流量。它允许Nginx在传输层(TCP/UDP)上进行代理、负载均衡和流量控制。Stream模块通常用于构建TCP代理、数据库负载均衡、消息队列代理等应用。
# stream与http配置同级,功能类似,但请根据需要选择
# 这里是网站负载均衡,所以选择http
http {
#其他内容...
upstream <随便取个名字>{
ip_hash; #同ip的客户端每次请求只会指向同一负载服务器,解决session相关问题
#默认轮询方式分配负载,加了weight就可以分配权重
server xxx.xxx.xxx.xxx:xxxx weight=1; #服务器1
server xxx.xxx.xxx.xxx:xxxx weight=2; #服务器2
server xxx.xxx.xxx.xxx:xxxx weight=2; #服务器3
}
# 每个server就是一个虚拟主机
server{
#其他内容...
location /app { #/app路径会代理到upstream配置的服务器中,自行选择也可以根路径/
proxy_path http://<您上面取的名字> ;
}
}
}
#直接复制可能有问题,几行代码就自己写吧