Nginx配置集群以及后端代理,简单实现负载均衡
Song •
1520 次浏览 •
0个评论 •
2022年03月25日
帮助客户部署产品遇到一种Ngxin集群解决方案;所以记录方便后期运用到:
一、业务场景
客户使用一个对外服务器IP,域名解析将所有的流量全部引入对外服务器;然后通过Nginx转发到机房的其他服务器,也就是说本地集群;本场景主要用于访问量大的服务器请求。同时我们以前有分享过直接域名实现负载均衡,两者的不同点在于一个是域名负载均衡需要多台线上服务器(多个对外IP)而本方法只需要一台服务器。
二、Nginx负载均衡配置
我们通过upstream配置转发到的均衡服务器、然后在server中配置域名与转发即可。
1、什么是Upstream
upstream属于handler,只是他不产生自己的内容,而是通过请求后端服务器得到内容,所以才称为upstream(上游)。请求并取得响应内容的整个过程已经被封装到nginx内部,所以upstream模块只需要开发若干回调函数,完成构造请求和解析响应等具体的工作。
2、配置教程
我们支持分别配置80和443接口即所有nginx proxy_pass同时支持http/https;
upstream example
{
server 1.1.1.1:80;
server 2.2.2.2:80 backup;
}
upstream example_https
{
server 1.1.1.1:443;
server 2.2.2.2:443 backup;
}
server
{
listen 80;
server_name www.example.com;
index index.html index.htm index.php;
root /data/web/webclose;
location / {
proxy_pass http://example;
expires off;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /data/logs/$host.log access;
}
server
{
listen 443 ssl;
server_name www.example.com;
location / {
proxy_pass https://example_https;
expires off;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /data/logs/$host.log access;
}
3、在均衡服务器中自己实现Https
同时我们可以把所有请求转到80端口,自己在均衡服务器内转https即可。或者说将所有的请求转成内部Http;目前Nginx的upstream模块支持6种方式的负载均衡策略(算法):轮询(默认方式)、weight(权重方式)、ip_hash(依据ip分配方式)、least_conn(最少连接方式)、fair(第三方提供的响应时间方式)、url_hash(第三方通过的依据URL分配方式)。
upstream test_backend {
server 192.168.0.1:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.0.2:80 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.0.3:80 weight=3 max_fails=2 fail_timeout=30s;
server 192.168.0.4:80 weight=4 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
listen 443 ssl;
server_name test.com;
ssl_certificate ssl/test.com.pem;
ssl_certificate_key ssl/test.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PS1;
ssl_prefer_server_ciphers on;
access_log /home/work/logs/nginx/test.com.log main;
error_log /home/work/logs/nginx/test.com.err;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://test_backend;
}
}
具体教程参考 Nginx搭建负载均衡集群
提交评论
请登录后评论
用户评论
当前暂无评价,快来发表您的观点吧...
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
花生壳绑定ubuntu服务器? 2024-08-23
热门文章
-
花生壳绑定ubuntu服务器? 2024-08-23
-
Laravel模型更新全表如何实现? 2024-03-11
-
php图片转为二进制数据的方法 2023-10-23
-
Jquery如何监听动态创建元素的点击事件? 2023-09-08
-
所以SheetJS实现table导出数据为Excel 2023-09-05
ubuntu crontab设置定时任务教程以及常见命令合集