Saya telah menyiapkan server AWS EC2 minggu ini, dan saya hampir mencapai apa yang ingin saya lakukan. Namun membuka diri sebagai server web terbukti menjadi batu sandungan.
PENYIAPAN SAYA
Saya memiliki instans AWS EC2 yang menjalankan Red Hat EL7.
Saya memiliki server Apache yang berjalan di instance saya:
[ec2-user@ip-172-xx-xx-xx ~]$ ps -ef | grep -i httpd
root 18162 1 0 18:02 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 18163 18162 0 18:02 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 18164 18162 0 18:02 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 18165 18162 0 18:02 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 18166 18162 0 18:02 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 18167 18162 0 18:02 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
ec2-user 21345 20507 0 19:03 pts/1 00:00:00 grep --color=auto -i httpd
Tampaknya mendengarkan pada port 80:
[root@ip-172-xx-xx-xx ~]# netstat -lntp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18162/httpd
Saya menambahkan aturan masuk ke grup keamanan "launch-wizard-1" (yang ditampilkan sebagai grup keamanan misalnya) untuk port 80 (HTTP) dan 443 (HTTPS) dengan sumber "0.0.0.0/0" dan " ::/0"
Dan terakhir, untuk menguji pengaturan saya, saya membuat file index.html di root dokumen saya (/var/www/html):
<html>
<h1>TEST!</h1>
</html>
MASALAH
Dari browser chrome di komputer saya, ketika saya mencoba menekan:
http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com/index.html
Saya hanya mendapatkan:
This page isn’t working
ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com didn’t send any data.
ERR_EMPTY_RESPONSE
(Saya mendapatkan hal yang sama ketika saya menemukan salah satu nama domain yang telah saya siapkan di sana, dan itulah yang sebenarnya coba lakukan tentu saja!)
Saya sudah mencoba menghubungkan dari Chrome di 2 komputer berbeda, dan dari Safari di ponsel saya ("Safari tidak dapat membuka halaman karena tidak dapat terhubung ke server")
PEMERIKSAAN YANG TELAH SAYA LAKUKAN
Saya tidak yakin saya memiliki firewall server yang mencegah hal ini:
[root@ip-xx-xx-xx-xx conf]# /sbin/iptables -L -v -n
Chain INPUT (policy ACCEPT 3575 packets, 275K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 2215 packets, 350K bytes)
pkts bytes target prot opt in out source destination
Menguji dengan telnet dari sesi terminal di mac saya, port 80 tampaknya terbuka. Pertama menggunakan IP Publik IPv2:
telnet 18.xxx.xxx.xx 80
Trying 18.xxx.xxx.xx...
Connected to ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.
dan menggunakan DNS Publik (IPv4):
telnet ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com 80
Trying 18.xxx.xxx.xx...
Connected to ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.
Dan sekali lagi, hal yang sama berlaku untuk nama domain saya - telnet ke port 80 menunjukkan "Tersambung".
- Apakah fakta bahwa "host asing" segera menutup koneksi itu penting? Haruskah tetap terbuka jika semuanya berjalan sebagaimana mestinya?
Menjalankan curl di host dengan benar mengembalikan file index.html sederhana saya:
[ec2-user@ip-172-xx-xx-xx ~]$ curl localhost
<html>
<h1>TEST!</h1>
</html>
Namun, menjalankan curl di komputer lokal saya - ke server - mengembalikan:
curl -v http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com:80
* Rebuilt URL to: http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com:80/
* Trying 18.xxx.xxx.xx...
* Connected to ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com (18.xxx.xxx.xx) port 80 (#0)
> GET / HTTP/1.1
> Host: ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com
> User-Agent: curl/7.43.0
> Accept: */*
>
* Empty reply from server
* Connection #0 to host ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com left intact
curl: (52) Empty reply from server
Saya juga menguji server web "secara internal" dengan menjalankan google chrome (tanpa kepala) di server untuk membuat tangkapan layar, diunduh ke komputer lokal saya dan muncul TEST! (yaitu berfungsi):
google-chrome-stable --headless --disable-gpu --screenshot http://localhost
Satu hal lagi yang perlu ditambahkan - ketika saya mencoba memukul server web dari mesin lokal saya, tidak ada yang muncul di log server web (error_log atau access_log) di server.
Jadi, pendapat saya adalah server web sudah aktif dan berjalan, berfungsi secara lokal, tetapi tidak berfungsi dengan benar untuk apa pun yang datang dari "luar". Tapi aku bingung sekarang.
curl localhost
dari server itu sendiri? Dengan begitu, ia menguji server web tanpa terpengaruh oleh konfigurasi jaringan apa pun. - person John Rotenstein   schedule 21.12.2018