我的亚马逊ec2实例存在问题。我无法从浏览器访问在端口8004上运行的django应用程序。
我在amazon ec2上安装了一个实例,安装了django和nginx。这是在ubuntu trusty 14.04上运行的。我在外部dns-nameserver上有一个域名,我已正确地将该域名指向我的amazon ec2实例的公共弹性ip。当我对服务器执行ping操作时,它会显示公共IP。
我以前见过类似的线程,在大多数情况下,问题都是因为没有为特定端口添加防火墙规则,即它们不对外界开放。在我的情况下,我确保在创建实例时端口22,80和443是打开的。我甚至打开了端口8000 - 8100。
注意:最终我将使用gunicorn运行django,但只是为了测试它我只是通过执行来运行它:manage.py runserver 8004
以下是亚马逊ec2上开放端口的入站规则的快照
可能是因为我在启动实例后正在编辑入站规则吗?这不是你想要做的吗?
Nginx运行没有问题,我将在下面发布我的配置。我不知道为什么这不起作用。我已经跟踪了我在这个主题上发现的任何线索,似乎没有任何解决方法。
更新:我现在可以确认我可以直接通过ip访问我的django网站了 IP:8004。所以很明显这不是端口的问题,但可能与nginx配置或我的DNS设置有关。
我的nginx配置(我已经用x替换了ip,而用sub.domain.com取代了域。然后我尝试从sub.domain.com访问该网站)
upstream docko_server {
server 127.0.0.1:8004 fail_timeout=0;
}
server {
server_name sub.domain.com;
listen xx.xx.xx.xxx:80;
return 303 https://$host$request_uri;
}
# HTTPS server
#
server {
listen xx.xx.xx.xxx:443;
server_name sub.domain.com;
ssl on;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
client_max_body_size 25M;
access_log /webapps/docko/logs/nginx-access.log;
error_log /webapps/docko/logs/nginx-error.log;
location /assets/ {
alias /webapps/docko/docko/staticfiles/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://docko_server;
break;
}
}
}
答案 0 :(得分:1)
如果要通过端口8004从Internet访问django dev服务器,请尝试:
manage.py runserver 0.0.0.0:8004
dev服务器默认只在127.0.0.1上监听。
但是,如果通过Nginx访问开发服务器,即连接到your.domain.com:80
,则不需要这样做。在这种情况下,Nginx将充当代理,将请求传递给开发服务器。
顺便说一句,您可以在启动实例后编辑现有安全组的规则,这非常有效。
答案 1 :(得分:0)
为了回答我自己的问题,我成功了,没有分配弹性ip,只是只是在端口80,443上听。所以在我的nginx conf而不是这个。
server_name sub.domain.com;
listen xx.xx.xx.xxx:80;
我现在只有
server_name sub.domain.com
listen 80;
443也是如此。