isito之proxy_init

介绍istio-iptables.sh脚本的功能与参数配置,包括如何通过不同选项设置来控制流量重定向到Envoy的过程。

1、shell脚本

istio-iptables.sh

2、参数解析

istio-iptables.sh -p PORT -u UID -g GID [-m mode] [-b ports] [-d ports] [-i CIDR] [-x CIDR] [-h]

 -p: 指定重定向所有 TCP 流量的 Envoy 端口(默认为 $ENVOY_PORT = 15001)
  -u: 指定未应用重定向的用户的 UID。通常,这是代理容器的 UID(默认为 $ENVOY_USER 的 uid,istio_proxy 的 uid 或 1337)
  -g: 指定未应用重定向的用户的 GID。(与 -u param 相同的默认值)
  -m: 指定入站连接重定向到 Envoy 的模式,“REDIRECT” 或 “TPROXY”(默认为 $ISTIO_INBOUND_INTERCEPTION_MODE)
  -b: 逗号分隔的入站端口列表,其流量将重定向到 Envoy(可选)。使用通配符 “*” 表示重定向所有端口。为空时表示禁用所有入站重定向(默认为 $ISTIO_INBOUND_PORTS)
  -d: 指定要从重定向到 Envoy 中排除(可选)的入站端口列表,以逗号格式分隔。使用通配符“*” 表示重定向所有入站流量(默认为 $ISTIO_LOCAL_EXCLUDE_PORTS)
  -i: 指定重定向到 Envoy(可选)的 IP 地址范围,以逗号分隔的 CIDR 格式列表。使用通配符 “*” 表示重定向所有出站流量。空列表将禁用所有出站重定向(默认为 $ISTIO_SERVICE_CIDR)
  -x: 指定将从重定向中排除的 IP 地址范围,以逗号分隔的 CIDR 格式列表。使用通配符 “*” 表示重定向所有出站流量(默认为 $ISTIO_SERVICE_EXCLUDE_CIDR)。

 

### 配置分析 整体来看,该配置是为了将 `/socket-api` 路径下的请求代理到 `http://192.168.70.117:5002` 后端服务器,并且设置了 WebSocket 代理所需的一些关键头信息,配置基本思路正确,但存在一些可以完善的地方: #### 1. `Connection` 头大小写问题 `Connection` 头的值 `"upgrade"` 建议改为 `"Upgrade"`,因为 HTTP 协议中该值通常为大写的 `"Upgrade"`,和常见的配置保持一致 [^1]。 ```nginx proxy_set_header Connection "Upgrade"; ``` #### 2. 路径保持问题 当前配置可以实现将 `/socket-api` 路径的请求代理到后端,但要保持完整路径,需要在 `proxy_pass` 后加上路径的映射。 ```nginx location /socket-api { proxy_pass http://192.168.70.117:5002/socket-api; # 其他配置保持不变 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; 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_set_header X-Forwarded-Proto $scheme; proxy_set_header Origin $http_origin; proxy_read_timeout 86400; proxy_send_timeout 86400; proxy_connect_timeout 86400; proxy_buffering off; proxy_redirect off; } ``` #### 3. 超时时间设置 `proxy_read_timeout`、`proxy_send_timeout` 和 `proxy_connect_timeout` 设置为 `86400` 秒(即 24 小时),这是一个非常长的时间,在实际应用中,如果没有特殊需求,建议设置一个合理的较短时间,避免资源长时间占用。例如: ```nginx proxy_read_timeout 60s; proxy_send_timeout 60s; proxy_connect_timeout 15s; ``` ### 完整配置示例 ```nginx location /socket-api { proxy_pass http://192.168.70.117:5002/socket-api; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; 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_set_header X-Forwarded-Proto $scheme; proxy_set_header Origin $http_origin; proxy_read_timeout 60s; proxy_send_timeout 60s; proxy_connect_timeout 15s; proxy_buffering off; proxy_redirect off; } ``` ### 测试配置 配置修改完成后,需要重新加载 Nginx 配置: ```bash nginx -s reload ``` 然后可以使用工具(如 `curl`)或者浏览器来测试 `/socket-api` 路径的请求是否能正确代理到后端服务器。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值