方案

  1. 如果你和我一样,大量内网的iis服务器,但是对外只有一个ip,可以考虑这样的解决方案。
  2. 具体解决我参照如下的解决 IIS server集群(nginx方案)

nginx下划线的问题

  1. html,js,css都是相当的顺利,网站里面有几个restful 的API请求打死都过不去。只能查nginx error_log

    client sent invalid request while reading client request line
    
  2. 网上查了一下,发现是nginx对header name 字符做了限制,如果header name 中包含下划线,则忽略掉。

  3. 确实几个无法访问的API都是带了下划线的。有两个解决方案,最粗暴的就是重定义下接口,去掉那些下划线。
  4. 当然还有给出改nginx源码的方法

    在ngx_http_parse_header_line() 函数中
    f  (ch == ‘_’) {
            if (
                    allow_underscores  // 问题所在
                )
    开启 underscores_in_headers on
    可以加到http或者server中。
    
    语法:underscores_in_headers on|off
    默认值:off
    使用字段:http, server
    是否允许在header的字段中带下划线
    

大致如此