**问题:**我不能:1)使用本地浏览器打开http://<public IP>:8000
2)使用终端打开curl -v http://<public IP>:8000
3)Ping
我可以:1)使用terminal运行curl -v http://127.0.0.1:8000
,结果表明django服务器正在工作。
**背景:**我在MacOS上工作,Python 3.9.13,Django 4.1.7,MySQL 8.0.31。我在EC2服务器上安装了我的django项目,也安装了一个RDS,现在可以工作了。今天我试着通过浏览器打开项目的索引页,但是没有响应。
所以我检查了入站规则:
1)All traffic :0.0.0.0/0
2)Custom TCP :port: 8000, 0.0.0.0/0
3)Custom TCP :port: 8000, 172.31.0.0/20 (subnet, IPv4 CIDR)
4)Custom TCP :port: 8000, 172.31.16.0/20 (subnet, IPv4 CIDR)
5)Custom TCP :port: 8000, 172.31.32.0/20 (subnet, IPv4 CIDR)
6)Custom ICMP:echo request, 0.0.0.0/0
7)All TCP : My IP, x.x.x.x/32
8)SSH: port 22, 0.0.0.0/0
我还设置了1)settings.pyALLOW_HOSTS = ['public IP', '127.0.0.1'] (no port)
中的公共IP
2)防火墙允许8000个端口sudo firewall-cmd --add-port=8000/tcp --permanent
最后,运行django server python manage.py runserver 0.0.0.0:8000
**结果:**1)curl -v http://127.0.0.1:8000
,
* Trying 127.0.0.1:8000...
* Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
> GET /login/ HTTP/1.1
> Host: 127.0.0.1:8000
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Wed, 22 Mar 2023 11:43:26 GMT
< Server: WSGIServer/0.2 CPython/3.9.13
< Content-Type: text/html; charset=utf-8
< X-Frame-Options: DENY
< Vary: Cookie
< Content-Length: 10761
< X-Content-Type-Options: nosniff
< Referrer-Policy: same-origin
< Cross-Origin-Opener-Policy: same-origin
< Set-Cookie: csrftoken="xxxx-I remove this token"; expires=Wed, 20 Mar 2024 11:43:26 GMT; Max-Age=31449600; Path=/; SameSite=Lax
<
<!DOCTYPE html>
<html lang="en">
<head>
...
end...
2)x1米7英寸x1米8英寸
当我从www.example.com删除'127.0.0.1'时settings.py,curl -v http://127.0.0.1:8000
也不工作。因此我设置ALLOW_HOSTS =['*'],curl -v http://127.0.0.1:8000
工作,但就curl -v <public IP>:8000
而言,它仍然不工作。
这是我的问题。你的帮助将非常感谢!
2条答案
按热度按时间1mrurvl11#
您需要添加安全组规则,以允许来自路由器IP地址的通信通过端口8000。
此外,请确保您有互联网网关,以允许从外部世界连接到EC2。
nzk0hqpo2#
我解决了我的问题,thx给作者:Start Django development server on AWS EC2 Amazon Linux
我首先测试了
curl http://ec2-xx-xxx-xx-xxx.region.compute.amazonaws.com:8000
,它工作正常,然后我更改了安全组并添加了它。