2016-05-23 9 views
0

Wenn ich eine Open Source-Anwendung "atwork" (https://github.com/ritenv/atwork) auf einer ec2-Maschineninstanz an Port 80 ausführe, erhalte ich Serverantworten mit verbotenen Codes (403) :AWS ec2 Node.js Anwendung - Verbotener Port 80 (403 Antwort)

AtWork running at 0.0.0.0:80 
GET/304 3.802 ms - - 
GET /users/notifications 403 3.972 ms - 9 
GET /posts?limitComments=true 403 0.956 ms - 9 
GET /chats 403 1.289 ms - 9 
GET /streams?subscribed=true 403 0.708 ms - 9 
GET /streams?unsubscribed=true 403 0.859 ms - 9 
GET /users/me 403 0.847 ms - 9 
GET /system-settings 304 4.803 ms - - 
GET /favicon.ico 304 0.453 ms - - 
GET /system-settings 304 2.766 ms - - 
GET /favicon.ico 304 0.322 ms - - 

Allerdings, wenn ich laufen sie auf einem anderen Port (8080), habe ich die folgenden 200 Nachrichten von den Server erhalten:

AtWork running at 0.0.0.0:8080 
GET/200 4.219 ms - 6412 
GET /users/notifications 304 12.189 ms - - 
GET /posts?limitComments=true 304 5.162 ms - - 
GET /chats 304 4.344 ms - - 
GET /streams?unsubscribed=true 304 5.429 ms - - 
GET /streams?subscribed=true 304 5.495 ms - - 
GET /users/me 200 3.478 ms - 882 
GET /system-settings 304 4.809 ms - - 
Kirill A Novik is online. 
GET /favicon.ico 304 0.795 ms - - 

ich habe versucht, die folgenden (jedoch nichts davon gearbeitet):

  1. Ändern Sie Firewall-Optionen in den Sicherheitsgruppen auf der AWS-Konsole, sodass der gesamte TCP-Verkehr an allen Ports möglich ist.
  2. Run iptable wie folgt aus:

    iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P VORVEREINBAR iptables -P OUTPUT ACCEPT iptables -A EINGANG -p tcp --dport 80 -m Status --status NEU, ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp - sport 80 -m zustand --status ESTABLISHED -j ACCEPT

Bitte helfen Sie mir zu verstehen, was ich falsch mache, und wie ich Port 80 wie andere Ports verhalten könnte.

Vielen Dank.

+0

Haben Sie die Sicherheitsgruppe für Ihre ec2-Instanz überprüft? http://StackOverflow.com/A/10454688/858578 – luchosrock

+0

Ich tat, der TCP-Verkehr ist für alle ips erlaubt + http ist für alle ips erlaubt –

+1

Haben Sie etwas anderes auf Port 80 läuft? –

Antwort

0

Es gibt 2 Möglichkeiten, dieses Problem zu beheben. Zuerst geben Sie die Root-Berechtigungen für den Benutzer der ec2-Maschine, der die Anwendung ausführt. Aber es kann ein Sicherheitsrisiko sein - laufende Anwendung als root.

Die Sekunden sind, die, die ich bevorzuge: laufende nodejs Anwendung als eingeschränkter Benutzer, aber hinter Reverse-Proxy.

Anwendung kann auf Ports> 1000 - wie 8080 eins hören. Und Sie können NGINX als Reverse-Proxy ausführen. Es hört auf 80 oder 443 Port und überträgt Anforderungen an Ihre Nodejs-Anwendung. Sie können nginx-Konfigurationen wie folgt verwenden: https://github.com/vodolaz095/hunt/blob/master/examples/serverConfigsExamples/nginx.conf

+0

Vielen Dank, ich habe versucht nginx, und es leitet definitiv Verkehr an den richtigen Port, aber das Problem ist immer noch da. Versuchen Sie, auf die Website http://login.patiary.com:8080/ und dann auf http://login.patienty.com: –

+0

Ich denke, es funktioniert – vodolaz095