2017-04-23 4 views
0

J'ai une instance ec2 avec 2 interfaces, et0 et et1. J'ai assigné à ces interfaces 2 IPs élastiques. Et0 fonctionne bien, la demande faite à IP affecté à cette IP sont traitées par le serveur avec ce listen 80 default_server; nginx config. Dans /etc/nginx/sites-available/default j'ai fait config pour cette deuxième interface et1:Nginx ne gère pas la requête si je fais une requête par AWS élastique IP

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

Si je fais la demande de deuxième instance aws à 172.31.13.104 je reçois redirect correcte à Google. Mais quand j'utilise la requête de recherche élastique publique est en attente tout le temps. Quand je cours tcptruck sur le serveur sur et1, et je fais la demande sur mon ordinateur à l'élastique IP, dans le serveur je vois que la demande et l'état de la demande montrent toujours SYN_SENT. Que dois-je faire pour que nginx fonctionne correctement?

Edit: 172.31.13.104 est IP privée de et1

+0

Le port '80' est-il ouvert à la fois dans le groupe de sécurité affecté à l'instance et dans tout logiciel de pare-feu s'exécutant sur l'instance, par exemple' iptables'? –

Répondre

1

J'ai eu le même problème et voici comment je l'ai résolu. Vous avez besoin de deux ENI avec leurs propres ips, vous devez les configurer dans leur domaine respectif, puis vous créez un fichier de configuration pour chacune des deux connexions.

Voici ce que j'ai dû faire sur mon serveur rhel pour le faire fonctionner.

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

- DISPOSITIF changed = "eth0" DEVICE = "eth1" et enregistré le fichier

$ 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 

- s'il vous plaît remplacer 172.31.48.1 avec la passerelle de votre interface (vous obtiendrez ceci de ' route -n » sortie) - remplacer 172.ip1 avec une adresse IP privée eth0 et 172.ip2 avec adresse IP privée de eth1 (vous obtiendrez ces de 'sortie' ifconfig)

$ sudo chmod +x /etc/rc.local 

Après cela, s'il vous plaît reboo t ou Arrêtez/Démarrez l'instance et une fois l'instance démarrée, vous pourrez vous connecter en utilisant l'un ou l'autre des EIP. Une fois que vous êtes connecté, vous pouvez vérifier si les deux interfaces peuvent communiquer sur Internet en exécutant les commandes suivantes:

$ 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) 

Vous devriez obtenir une réponse ping à la fois des pings. Une fois que vous aurez fini, vous devrez configurer des hôtes virtuels basés sur IP dans apache [5]. Cela vous permettra d'aller chercher des contenus différents à partir de différents répertoires pour différents domaines/sous-domaines.

Ensuite, vous devrez créer un ensemble d'enregistrements de ressources [6] pour router le trafic d'un sous-domaine appelé 'poc.domain.com' vers une adresse IP (EIP de eth1 dans votre cas). Enfin, vous devrez associer/modifier les groupes de sécurité [7] de chaque ENI (eth0 et eth1) selon vos besoins.