标签: ip

将Nginx修补为ip_hash 4个八位字节而不是3个

我目前正在我的网络上运行两个后端服务器,并在Windows上与Nginx进行负载平衡.

我正在加载测试系统,但是我的所有流量都指向一台服务器.这是因为ip_hash算法按前3个八位字节对流量进行排序,即111.222.333.XXX

这是一个问题,因为我瞄准服务器的所有流量都具有相同的基地址(相同的前3个八位字节),因此我的流量都不会转到另一个服务器.有没有人知道修补或更改ip_hash算法以过滤4个八位字节的方法.

谢谢

ip load-balancing nginx

11
推荐指数
1
解决办法
2077
查看次数

Python:获取用于将IP数据发送到特定远程IP地址的本地IP地址

我正在使用Python脚本将UDP数据包发送到服务器,该服务器将注册我的脚本以接收来自服务器的通知.该协议要求我发送自己的IP地址和端口,我希望收到这些通知,因此这应该是可以从服务器网络访问的地址.

解决方案至少应该适用于Windows XP及更高版本,最好是Mac OS X,因为这是我的开发平台.

第一步是获取任何接口的IP地址.我目前正在使用通常建议的解析机器自己的主机名的方法:

def get_local_address():
    return socket.gethostbyname(socket.gethostname())
Run Code Online (Sandbox Code Playgroud)

这有时只能起作用.目前它返回172.16.249.1,这是VM Ware使用的虚拟接口的地址,所以这是一个问题.

更好的方法是获取默认接口的IP地址,这在大多数时候应该是正确的.

更好的方法是通过面向连接的协议(如TCP)获取用于连接服务器的实际IP地址.我实际上可以获得该地址,但不是在没有尝试打开连接的情况下:

def get_address_to_connect_to(server_addr):
    non_open_port = 50000
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    try:
        s.connect((server_addr, non_open_port))
    except socket.error:
        pass
    else:
        s.close() # just in case

    return s.getsockname()[0]
Run Code Online (Sandbox Code Playgroud)

在服务器无法访问或其间的恶意防火墙阻止ICMP数据包的情况下,这将阻止直到达到某个TCP超时.有没有更好的方法来获取这些信息?

python ip

10
推荐指数
1
解决办法
1万
查看次数

如何获取IP:PORT与正则表达式?

我在PHP中创建了一个小型IP:PORT scraper.问题是我对RegEx很不熟悉.

所以我一直在拼凑我能做的事情.

这是我得到的: /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([0-9]{1,5})\b/

我知道这不是最好的.至少不是最终抓住端口,因为这意味着端口将能够像99999这样的东西.

此外,它似乎以这种方式返回两个匹配.IP:PORT和PORT.我只需要它来获取完整的IP:PORT,而不是其中一个.

php regex ip port

10
推荐指数
3
解决办法
1万
查看次数

按IP地址检测ISP(或/和国家/地区)

互联网上有大量的服务,我们可以找到我们机器的外部IP地址,但这些服务通常提供有关互联网提供商或国家(或两者)的信息.

所以我的问题是:我怎样才能以编程方式获取这些信息知道IP地址?是否有一些公共目录或某些API用于检索此类信息?

ip

10
推荐指数
3
解决办法
2万
查看次数

当从专用NIC访问时,Rails将IP显示为127.0.0.1,但Nginx显示正确的IP.公共IP转发正常

我们在Unicorn + Nginx上运行Rails应用程序.服务器有两个我们使用的NIC.eth0处理对公共互联网的eth2请求,并处理来自我们专用网络的请求.

当请求通过时eth0,nginx日志显示公共IP,Rails日志也显示此IP.但是,当请求通过时eth2,nginx日志会正确显示私有IP(例如192.168.5.134),但Rails日志会显示127.0.0.1.

因此,似乎公共请求正确设置eth0X-Forwarded-For标头,但是对于请求没有发生这种情况eth2.

我们的nginx配置非常基本:

upstream example.com {
  server unix://var/www/example.com/shared/sockets/unicorn.socket fail_timeout=0;
}

...

server {
  listen 443 ssl;
  ...

  location @example.com  {
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real_IP $remote_Addr;
    proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    if ($host ~* "^(.+)\.example.com$") {
      set $subdomain $1;
    }

    proxy_pass http://example.com;
  }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ip networking ruby-on-rails nginx unicorn

10
推荐指数
1
解决办法
1515
查看次数

Haskell网络SockAddrInet使用哪个字节序?

哈斯克尔network小号HostAddress说:"网络字节顺序",在它的文档

但是,如果我以网络字节顺序(big-endian)传递地址,它的show instance打印错误的地址:

Prelude Network.Socket> :m + Network.Socket Data.Bits 
Prelude Network.Socket Data.Bits> SockAddrInet (fromInteger 50) (192 `shiftL` 24)
0.0.0.192:50
Prelude Network.Socket Data.Bits> 
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?为什么它会打印小端的东西?我应该以大端还是小端格式传递IP地址?

ip haskell network-programming

10
推荐指数
1
解决办法
221
查看次数

如何使用JavaScript获取本地/内部IP

如何使用WebRTC获取本地客户端IP .

我不需要REMOTE_ADDR客户端,而是他的本地网络IP.我之前在网站上看过这个sharedrop.com,它使用WebRTC识别同一网络中的计算机.

在PHP中,我这样做是为了让客户端远程IP:

<?php
  echo $_SERVER["REMOTE_ADDR"]; // which would return 72.72.72.175
?>
Run Code Online (Sandbox Code Playgroud)

我查看了stackoverflow,但每个问题都是使用远程地址解决的.

如何使用JavaScript而不是远程地址获取本地IP(例如192.168.1.24).

javascript ip network-programming webrtc

10
推荐指数
1
解决办法
1万
查看次数

PHP根据主机名获取IP

我要实现从溶液WinAppC#PHP.我需要提取IP基于host name.下面的代码完美地运行:

IPHostEntry LocalHostIPEntry = Dns.GetHostEntry(hostname);
IPAddress LocalHostIP = LocalHostIPEntry.AddressList[0];
string ipfromhost = LocalHostIP.ToString();
Run Code Online (Sandbox Code Playgroud)

我到目前为止唯一的选择PHP是:

gethostbyname('hostname');
Run Code Online (Sandbox Code Playgroud)

但是IP对于同一主机而言,返回的C#代码与代码不同.此外,IP它返回不正确.如果我使用相关主机检查,nslookup -IPaddress-那么我得到一个完全不同的主机名.

这是怎么回事?还有什么其他方法可用于查找IPhost网络上使用PHP

php c# ip

10
推荐指数
1
解决办法
1368
查看次数

EIP:超出地址限制

我有一个 CloudFormation 模板,可以为 RStudio Server 启动 EC2 实例。

AWSTemplateFormatVersion: 2010-09-09

Description: Sets up an RStudio and Shiny environment on AWS

Parameters:
  InstanceType:
    Type: String
    Description: Instance type for RStudio. Default is t2.micro.
    AllowedValues:
      - t2.micro
      - t2.small
      - t2.medium
      - t2.large
      - t2.xlarge
      - t2.2xlarge
      - m4.large
      - m4.xlarge
      - m4.2xlarge
      - m4.4xlarge
      - m4.10xlarge
      - m4.16xlarge
      - c4.large
      - c4.xlarge
      - c4.2xlarge
      - c4.4xlarge
      - c4.8xlarge
      - r4.large
      - r4.xlarge
      - r4.2xlarge
      - r4.4xlarge
      - r4.8xlarge
      - r4.16xlarge
      - …
Run Code Online (Sandbox Code Playgroud)

ip amazon-ec2 amazon-web-services

10
推荐指数
1
解决办法
2万
查看次数

Docker 获取已创建网络的 IP 地址列表(子网的 IP 范围)

如果您使用命令:

docker network ls
Run Code Online (Sandbox Code Playgroud)

您将得到列出所有 Docker 网络的输出,但缺少这些网络的 IP 范围。

如何获取所有创建的子网IP范围?

例如,如果我使用命令:

docker network create --subnet 172.31.0.1/16 --internal network-one
docker network create --subnet 173.31.0.1/16 --internal network-two
Run Code Online (Sandbox Code Playgroud)

我想获取包含的地址范围列表

172.31.0.1/16
173.31.0.1/16
Run Code Online (Sandbox Code Playgroud)

如果我能够以 CLI 输出格式获取列表,那就完美了:

network-one 172.31.0.1/16
network-two 173.31.0.1/16
...
Run Code Online (Sandbox Code Playgroud)

所以我可以将它作为 Bash 数组加载,并稍后逐行解析它或通过管道传输到另一个 CLI 命令。

ip bash command-line-interface subnet docker

10
推荐指数
2
解决办法
7961
查看次数