无法通过本地计算机上的Nginx连接到AWS EC2

时间:2016-04-01 22:48:57

标签: nginx amazon-ec2

我有一个运行Ubuntu的AWS EC2实例,我想用Nginx进行配置。我的理解是,如果Nginx正在运行,并且我已经正确配置了我的服务器块,我应该能够在我的VM之外修改我的主机文件,以便从自定义域提供公共IP。

所以在我的实例中,Nginx正常运行:

~$ /etc/init.d/nginx status
 * nginx is running

我的服务器块位于/etc/nginx/sites-available/example.com(符号链接到sites-enabled),如下所示:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/example;
        index index.html index.htm;

        server_name local.example.com local.www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }

var/www/example/index.html是一个包含要显示的文本的现有目录。

根据其他Stackoverflow答案,我已将我的安全组修改为包含HTTP端口80: enter image description here

当我从我的个人计算机ping AWS界面中提供的公共IP时,我收到了回复。

但是当我从实例内部运行curl -v localhost时,我得到了

* Rebuilt URL to: localhost/
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* connect to 127.0.0.1 port 80 failed: Connection refused
* Failed to connect to localhost port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 80: Connection refused

此外,当我像这样编辑我的主机文件时

my.public.ip    local.example.com

连接超时。

为什么在编辑index.html文件时,我无法将hosts提供给虚拟域名?

1 个答案:

答案 0 :(得分:3)

问题在于,为了象征性地链接文件,它需要您使用完整路径。所以当我在/etc/nginx时,我跑了

ln -s sites-available/example.com sites-enabled/

这并没有创建一个“正确的”符号链接,并且我的Nginx失败了。我不得不跑

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

显然,您无法使用相对路径进行符号链接。它们必须是绝对的。