如果我通过AWS弹性IP发出请求,Nginx不会处理请求

时间:2017-04-23 14:42:25

标签: amazon-web-services nginx amazon-ec2 elastic-ip

我有2个接口的et2实例,et0和et1。我分配了2个弹性IP接口。 et0工作正常,对分配给该IP的IP的请求由具有listen 80 default_server; nginx配置的服务器处理。在/etc/nginx/sites-available/default我为第二个接口et1创建了配置:

server {
    listen 172.31.13.104:80;
    #listen [::]:80 default_server;
    server_name example2.com;
    return 301 http://google.com;
}

如果我从第二个aws实例向172.31.13.104发出请求,我会收到正确的重定向到Google。但是当我使用公共弹性搜索请求时,所有时间都待定。当我在tcptruck上的服务器上运行et1,并且我在我的计算机上向弹性IP发出请求时,在服务器中我看到该请求和请求状态仍显示SYN_SENT。我该怎么做才能使nginx正常工作?

编辑: 172.31.13.104是私有IP et1

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,这就是我解决它的方法。您需要两个带有自己的ips的ENI,您需要将它们配置到各自的域,然后为两个连接中的每一个创建一个配置文件。

以下是我在rhel服务器上必须要做的事情。

$ cd /etc/sysconfig/network-scripts
 $ sudo cp ifcfg-eth0 ifcfg-eth1
$ sudo vi ifcfg-eth1

- 更改了DEVICE =" eth0"到DEVICE =" eth1"并保存文件

  $ sudo vi /etc/rc.local
 -- added the following lines and saved the file ip route add default via 172.31.48.1 dev eth0 table 20 ip rule add from 172.ip1 table 20 ip
 route add default via 172.31.48.1 dev eth1 table 21 ip rule add from
 172.ip2 table 21

- 请将172.31.48.1替换为您界面的网关(您将从' route -n'输出中获取此信息) - 将172.ip1替换为eth0的私有IP地址,将172.ip2替换为eth1的私有IP地址(您将从' ifconfig'输出中获取这些地址)

$ sudo chmod +x /etc/rc.local

之后,请重新启动或停止/启动实例,一旦实例启动,您就可以使用任一EIP登录。登录后,您可以通过运行以下命令验证这两个接口是否可以通过Internet进行通信:

$ ping -I eth0 google.com (this will ping google.com from interface eth0)
$ ping -I eth1 google.com (this will ping google.com from interface eth1)

你应该从两个ping获得ping响应。

完成此操作后,您需要在apache中配置基于IP的虚拟主机[5]。这将允许您从不同的域/子域的不同目录中获取不同的内容。

然后,您需要创建一个资源记录集[6]来为名为' poc.domain.com'的子域路由路由流量。到IP地址(在你的情况下,eth1&#EIP)。

最后,您需要根据您的要求关联/更改每个ENI(eth0和eth1)的安全组[7]。

答案 1 :(得分:0)

我自己解决了问题。我的IP路由规则不正确,这里是教程如何配置ip表https://www.lisenet.com/2014/create-and-attach-a-second-elastic-network-interface-with-eip-to-ec2-vpc-instance/