网站首页 > 技术教程 正文
众所周知,nginx是一个高性能http和反向代理的web服务器,其实也可以用于代理转发TCP连接
从1.9.x版本开始,nginx增加了一个stream模块可以用于转发TCP连接
一、配置TCP转发的方法
1.首先找到nginx的配置文件nginx.conf
cd /etc/nginx/ #进入配置文件路径当前目录
vim nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
2.nginx.conf添加stream模块,写入TCP代理转发的参数
#注意stream模块和http模块是同级,不要将stream添加到http模块里
stream{
upstream test{
server 192.168.0.1:8000(ip地址:端口号)
}
server{
listen 8000;
proxy_pass test;
}
}
二、nginx tcp代理转发的负载均衡
原理和nginx http代理转发思路一样,也是5种模式
轮询(默认)
每个请求按时间顺序分配给配置的server地址,如果其中一个server地址无法连通,会自动剔除
upstream test{
server 192.168.0.1:8090;
server 192.168.0.2:8090;
}
server{
listen 8090;
proxy_connect_timeout 1s;
proxy_pass test;
}
权重(weight)
给server地址配置weight权重值,weight和分配的访问比率成正比,一般用于所配置的server性能不均的情况
upstream test{
server 192.168.0.1:8090 weight=9; #10次请求9次转发到该地址
server 192.168.0.2:8090 weight=1;
}
server {
listen 8090;
proxy_pass test ;
}
ip_hash
每次请求按照请求访问方的IP的hash结果分配,每个用户分固定访问其中一个server地址
upstream test{
ip_hash;
server 192.168.0.1:8090;
server 192.168.0.2:8090;
}
server{
listen 8090;
proxy_pass test;
}
fair(第三方)需要安装第三方模块
按照server的地址的响应时间来分配,响应时间短的优先分配
upstream{
fair;
server 192.168.0.1:8090;
server 192.168.0.2:8090;
}
server{
listen 8090;
proxy_pass test;
}
url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
upstream test{
hash $request_uri;
hash_method crc32;
server 192.168.0.1:8090;
server 192.168.0.2:8090;
}
server{
listen 8090;
proxy_pass test;
}
自定义负载
upstream test{
server 192.168.0.1:8090 down;
server 192.168.0.2:8090;
server 192.168.0.3:8090 backup;
}
server{
liisten 8090;
proxy_connect_timeout 1s; #一定要设置连接时间,否则不生效
proxy_timeout 1s; #proxy_connect_timeout和proxy_timeout 实测设置一个就可以生效
proxy_pass test;
}
猜你喜欢
- 2024-10-10 Nginx和Firewall都可以实现四层转发,你喜欢哪一个?
- 2024-10-10 nginx做转发时,带下划线字段的header内容丢失
- 2024-09-14 NGINX 应用性能优化指南(第二部分):反向代理缓冲
- 2024-09-14 10《Nginx 入门教程》Nginx 的反向代理(上)
- 2024-09-14 Kubernetes中如何转发请求到集群外?
- 2024-09-14 Nginx 全面攻略:动静分离、压缩、缓存、黑白名单、跨域、高可用
- 2024-09-14 Portainer实用教程Portainer如何使用 Nginx 容器实现端口转发?
- 2024-09-14 记一次nginx无法转发到后端的问题
- 2024-09-14 Nginx的请求数据处理流程(nginx的请求数据处理流程是什么)
- 2024-09-14 nginx使用(nginx使用的端口)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)