nginx似乎在80端口监听,但curl无法连接。

5

我已经在一台安装了Ubuntu 16.04和Nginx 1.10.2的机器上设置好了开发站点,以下是我所设置的配置:

 server {
     listen   80; 
     listen   [::]:80 default_server ipv6only=on;
     server_name commandcenter.dev;
     root /var/www/commandcenter;
     index index.php index.html index.htm;
     location ~ \.php$ {
         try_files $uri =404;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass unix:/var/run/php5-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
     }
 }

一切都正常启动,没有错误。Nginx正在运行:

 nginx.service - LSB: Stop/start nginx


Loaded: loaded (/etc/init.d/nginx; bad; vendor preset: enabled)
   Active: active (running) since Tue 2016-10-25 04:53:51 UTC; 8min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 11195 ExecStop=/etc/init.d/nginx stop (code=exited, status=0/SUCCESS)
  Process: 11205 ExecStart=/etc/init.d/nginx start (code=exited, status=0/SUCCESS)
    Tasks: 2
   Memory: 1.3M
      CPU: 10ms
   CGroup: /system.slice/nginx.service
           ├─11216 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
           └─11218 nginx: worker process

Oct 25 04:53:51 commandcenter systemd[1]: Stopped LSB: Stop/start nginx.
Oct 25 04:53:51 commandcenter systemd[1]: Starting LSB: Stop/start nginx...
Oct 25 04:53:51 commandcenter systemd[1]: Started LSB: Stop/start nginx.

我认为它正在使用80端口进行列出:

$ sudo netstat -nlp | grep nginx
6:tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11216/nginx.conf
8:tcp6       0      0 :::80                   :::*                    LISTEN      11216/nginx.conf

我可以ping服务器并成功到达。当我尝试使用curl或通过浏览器访问时,我会收到以下信息:
$ curl -I commandcenter.dev
curl: (7) Failed to connect to commandcenter.dev port 80: Connection refused

我不确定我需要进一步检查或更改什么才能通过nginx。我已经检查了错误日志和访问日志,但没有发现问题。


1
这个是否在你的本地机器上?如果是的话,你需要配置/etc/hosts/并添加commandcenter.dev 127.0.0.1到其中,以便它知道必须通过环回接口进行访问。 - Keenan Lawrence
这不在我的本地机器上,而是在虚拟机中。该机器的IP地址为10.10.10.1。我已经将其放入了我的hosts文件中。我可以ping通服务器,但使用curl/浏览器的任何请求都失败了。 - user3284694
我明白了。您是想从虚拟机内部还是从主机访问该网站? - Keenan Lawrence
在这种情况下,您需要进行一些额外的配置。这里是一种方法,但互联网上有很多例子。 - Keenan Lawrence
我已经进行了更改,但似乎没有任何变化。您确定需要这么做吗?我已经能够从主机访问该框,唯一无法访问的是nginx,我知道它正在监听80端口。 - user3284694
显示剩余2条评论
1个回答

0

server_name设置为

server {
    server_name .commandcenter.dev;
}

如果您想捕获域名、任何子域和完全限定域名。

如果您只有一个server块,则server_name是可选的。


你想访问哪些URL?你的位置块只是设置为匹配以.php结尾的任何内容。创建一个简单的HTML文件,为它创建一个简单的位置块,并尝试使用curl进行访问。 - timbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接