本文介绍Nginx的常用配置以及如何在ASM网关实现对应的功能。
Nginx配置 | 描述 | ASM实现方案 |
allow-backend-server-header | 允许从后端返回标头 | ASM网关默认为true。 |
allow-snippet-annotations | 允许在Ingress的Annotation中添加自定义脚本修改Nginx配置。 | 不支持该参数,ASM网关需要通过编辑IstioGateway YAML来修改网关配置。 |
compute-full-forwarded-for | 将远程地址附加到X-Forwarded-For标头而不是替换它。 | 取决于Envoy的use_remote_address配置,默认为true。Istio关于XFF头的处理,请参见Configuring Gateway Network Topology。 |
enable-underscores-inheaders | 允许Header出现下划线。 | 对应Envoy的headers_with_underscores_action,默认为允许。 |
forwarded-for-header | 设置用于标识客户端的原始IP地址的标头字段。 | ASM网关不支持自定义forwarded-for Header,默认为X-Forwarded-For。 |
generate-request-id | 如果请求中不存在X-Request-ID,则随机生成X-Request-ID。 | 对应Envoy的generate_request_id,可以通过ASM插件进行修改,默认为true。 |
ignore-invalid-headers | 设置是否忽略带有非法名称的Header。合法的Header名称应该是由英文字母、数字、短划线(-),可能包含下划线(_)。 说明 下划线(_)由underscores_in_headers控制。 | Envoy提供了一个Header Validator。若未配置Header Validator,会使用默认值。如果有非法Header,会提示 |
keep-alive-requests | 设置同一个keep-alive Connection最大可以处理多少个请求。达到最大请求数后,该连接将被关闭。 | 关于如何配置,请参见Destination Rule的 |
log-format-upstream | 自定义日志格式。 | ASM支持自定义日志格式,您可以通过ASM控制台的可观测配置页面进行配置。具体操作,请参见可观测配置。 |
max-worker-connections | 设置同一个Worker进程可以打开的最大连接数。 | ASM并未提供完全相同的配置,但是支持通过Destination Rule的 |
proxy-body-size | 设置客户端请求的最大Body Size,若超过该值,就会报413错误 | 不支持直接配置。建议分块传输,不要使用太大的Body。 |
proxy-connect-timeout | 定义与代理服务器建立连接的超时时间,不能超过75秒。 | 关于如何配置,请参见Destination Rule的 |
reuse-port | 设置Nginx为每个工作进程创建一个单独的监听Socket(使用SO_REUSEPORT参数),允许内核在工作进程之间分配传入的连接。默认为true。 | ASM网关默认为true。 |
server-tokens | 在响应中发送Nginx服务器标头,并在错误页面中显示Nginx的版本,默认为disabled。 | ASM网关默认会将服务器标头填写为Envoy的标头,但是错误页面不会显示Envoy版本。 |
ssl-redirect | 如果服务器由TLS证书,则将重定向的全局值设置为HTTPS。 | 关于如何配置,请参见Gateway的 |
upstream-keepalive-connections | 设置保留在每个工作进程的缓存中与上游服务器的最大的空闲Keepalive Connection数目。 | ASM并未提供完全相同的配置,但Destination Rule提供了 |
upstream-keepalive-timeout | 设置一个超时,超时之后将关闭与上游服务器之间的空闲连接。 | 关于如何配置,请参见Destination Rule的 |
use-forwarded-headers |
| Istio关于XFF头的处理,请参见Configuring Gateway Network Topology。 |
worker-cpu-affinity | 将Worker进程绑定到指定的CPU集合上。 | 容器环境中,通常不建议配置该选项。保持默认即可。 |
更多信息,请参见Ingress Nginx。