2013-04-15 123 views
55

我刚刚安装了Ubuntu 12.04服务器和nginx 1.2.7,从启用网站的地方删除default,并将我自己的文件添加到sites-available和符号链接sites-enabled。然后重新启动nginx。nginx没有听到端口80

问题:但是转到URL不会加载该网站。 netstat -nlp | grep nginxnetstat -nlp | grep 80都没有结果! lsof -i :80也不会返回任何内容。来自另一台服务器的返回正确的IP地址,因此它不应该是DNS问题。我能够连接到我现在停止服务的apache。 nginx日志也没有显示任何内容。

我应该如何解决这个问题?

/etc/nginx/site-available/mysite.com

server { 
    listen 80; 
    server_name www.mysite.com mysite.com *.mysite.com; 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 
    root /var/www/mysite/public; 

    index index.php index.html; 

    location/{ 
     try_files $uri $uri/ /index.php?$args ; 
    } 
    location ~ \.php$ { 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_read_timeout 300; 
    } 

} 
+0

日志中的任何内容? – mata

+0

它实际在运行吗?你用'sudo'开始了吗? –

+7

请不要因为你不知道答案而低估一个问题。 我遇到同样的问题。访问日志中没有任何内容......它在*:80上进行侦听。调试错误日志中没有错误。是的,@DondiMichaelStroma它正在运行。 (大声笑)。 – Swivel

回答

4

你可能nginx的绑定到端口80的两倍。这是你的完整配置文件吗?你有没有听到80端口的另一个声明?

+0

我试图在端口80上托管GitLab,但发现还有一个“默认”站点绑定到该端口。删除后者后,我的GitLab主机运行良好。 – riezebosch

+0

@riezebosch删除该网站的配置应该可以工作,但是如果你想多次听80端口,你也可以使用不同的server_names – Andres

1

你检查过你的nginx二进制文件是否真的存在吗?请检查是否

#whereis nginx 

输出二进制路径并使用init脚本从/etc/init.d/nginx中检查此路径。例如

DAEMON=/usr/sbin/nginx 

(在我的init脚本“测试-x $ DAEMON ||退出0”被调用,并且在任何情况下,该脚本返回什么 - 我的二进制完全缺失)

19

如果你的日志上保持沉默该问题可能不包括启用网站的目录。一种简单的方法可以告诉站点正在加载的是将服务器块中的错误/访问日志路径设置为唯一路径,重新加载nginx,并检查文件是否已创建。

确保/etc/nginx/nginx.conf中的http上下文中存在以下include指令。

http { 
    ... 
    include /etc/nginx/sites-enabled/*; 
} 
+2

这样一个简单的错过。谢谢你提到它! – Hayden

+0

非常感谢!你节省了我的一天 – brunocascio

103

我有同样的问题,解决方案是,我没有正确链接我的siteconf文件。尝试运行vim /etc/nginx/sites-enabled/mysite.com -can you get to it?我得到了“权限被拒绝”。

如果没有运行:

rm /etc/nginx/sites-enabled/mysite.com 
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com 
+41

这为我修好了!显然,如果你没有在第二个参数中输入完整的文件名,例如'ln -s /etc/nginx/sites-available/mysite.com/etc/nginx/sites-enabled /',它会产生一种假的符号链接,其中nginx扼杀。奇怪,但是是真的。 –

+0

这也是我的解决方案。在搜索答案时偶然发现了这条线索。 – mewm

+1

这也是我的一个解决方案。我试图修复一个nginx安装,一直在圈内运行数小时。布拉沃,你是绅士! –

3

我遇到了同样的问题,我通过HTTP连接时,得到了一个Failed to load resource: net::ERR_CONNECTION_REFUSED错误,但罚款通过HTTPS。 Ran netstat -tulpn,看到nginx没有绑定到IPv4的80端口。完成这里描述的一切。原来是一些非常愚蠢:

确保实际启用sites-available文件与default_server

希望这可以在一段时间内挽救一些其他可怜的白痴。

1

分号;include /etc/nginx/servers-enabled/*;可以直接绕过这个按照压和nginx -t检查将是成功的反正之前/etc/nginx/nginx.conf失踪就行为例。

因此,只需检查/etc/nginx/nginx.conf中的所有说明以分号;结尾。