本周我一直在设置一台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服务器已启动并正在运行,可以在本地运行,但是对于来自“外部”的任何内容均无法正常工作。我现在很难过。
答案 0 :(得分:1)
Do!我重新启动了实例,然后..全部正常工作!
使用计算机工作了22年,我花了22个小时才重新启动计算机。笨蛋!
答案 1 :(得分:0)
EC2 instance
上的ssh
连接到您的terminal
python
(如果未安装)使用nohup
启动python服务器以持续使用该服务器
nohup python -m http.server &
通常打开端口8000
,转到EC2 Security Group
或根据需要创建源anywhere
。
您将能够根据需要进行开发并查看您的更改。