从外部浏览器访问我的AWS EC2服务器index.html

时间:2018-12-20 19:23:25

标签: apache amazon-web-services amazon-ec2 webserver httpd.conf

本周我一直在设置一台AWS EC2服务器,而我几乎可以完成我想做的事情。但是开放作为Web服务器被证明是一个绊脚石。

我的设置

我有一个运行Red Hat EL7的AWS EC2实例。

我的实例上运行着一个Apache服务器:

[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

似乎正在侦听端口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   

我向源为“ 0.0.0.0/0”的端口80(HTTP)和443(HTTPS)的“ launch-wizard-1”安全组(显示为该实例的安全组)添加了入站规则。 ”和“ :: / 0”

最后,为了测试设置,我在文档根目录(/ var / www / html)中创建了一个index.html文件:

<html>
<h1>TEST!</h1>
</html>

问题

当我尝试点击以下内容时,从计算机上的chrome浏览器中

http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com/index.html

我刚得到:

This page isn’t working
ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com didn’t send any data.
ERR_EMPTY_RESPONSE

(当我打到我在那里设置的一个域名时,我会得到相同的结果,这当然是我真的试图做的事情!)

我尝试从两台不同的计算机上的Chrome和手机上的Safari连接(“ Safari无法打开页面,因为它无法连接到服务器”)

检查我是否执行

我不认为我有任何服务器防火墙可以阻止这种情况:

[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   

在我的Mac上的终端会话中使用telnet测试时,端口80似乎已打开。首先使用IPv2公用IP:

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.

并使用公共DNS(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.

同样,我的域名也一样-到端口80的telnet显示“已连接”。

-“外部主机”关闭连接的事实是否立即有意义?如果一切正常,它应该保持打开状态吗?

在主机上运行curl会正确返回我的简单index.html文件:

[ec2-user@ip-172-xx-xx-xx ~]$ curl localhost
<html>
<h1>TEST!</h1>
</html>

但是,在我的本地计算机上运行curl-到服务器-返回:

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

我还通过在服务器上运行google chrome(无头)来创建屏幕截图,并将其下载到我的本地计算机上,并“内部”对Web服务器进行了“内部测试”! (即其工作方式):

google-chrome-stable --headless --disable-gpu --screenshot     http://localhost

要添加的另一件事-当我尝试从本地计算机访问网络服务器时,服务器上的网络服务器日志(error_log或access_log)中什么都没有显示。

因此,我认为Web服务器已启动并正在运行,可以在本地运行,但是对于来自“外部”的任何内容均无法正常工作。我现在很难过。

2 个答案:

答案 0 :(得分:1)

Do!我重新启动了实例,然后..全部正常工作!

使用计算机工作了22年,我花了22个小时才重新启动计算机。笨蛋!

答案 1 :(得分:0)

  1. 使用EC2 instance上的ssh连接到您的terminal
  2. 安装python(如果未安装)
  3. 使用nohup启动python服务器以持续使用该服务器

    nohup python -m http.server &

  4. 通常打开端口8000,转到EC2 Security Group或根据需要创建源anywhere

Apple Document

  1. 导航到具有index.html的文件夹,文件路径如下所示

    enter image description here -- .compute-1.amazonaws.com:8000 / folder / website /

您将能够根据需要进行开发并查看您的更改。