我刚刚安装了一个Ubuntu 12.04服务器和nginx 1.2.7,从已启用的网站中删除了default
,并将自己的文件添加到sites-available
和sites-enabled
的符号链接中。然后重启nginx。
问题:但是,访问URL不会加载网站。 netstat -nlp | grep nginx
和netstat -nlp | grep 80
都没有结果! lsof -i :80
也没有回报。来自另一台服务器的dig
返回正确的IP地址,因此它不应该是DNS问题。我能够连接到apache,我现在停止了它的服务。 nginx日志也没有显示任何内容。
我该如何解决这个问题?
/etc/Nginx/site-available/my site.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;
}
}
我有同样的问题,解决方案是我没有正确地符合我的siteconf文件。尝试运行vim /etc/nginx/sites-enabled/mysite.com
- 你能到达吗?我得到了“权限被拒绝”。
如果没有运行:
rm /etc/nginx/sites-enabled/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
如果您的日志对此问题保持沉默,则可能不包括启用站点的目录。告诉站点正在加载的一种简单方法是将服务器块中的错误/访问日志路径设置为唯一路径,重新加载nginx,并检查文件是否已创建。
确保/etc/nginx/nginx.conf中的http上下文中存在以下include指令。
http {
...
include /etc/nginx/sites-enabled/*;
}
我遇到了同样的问题,我在通过HTTP连接时遇到了Failed to load resource: net::ERR_CONNECTION_REFUSED
错误,但在HTTPS上很好。 Ran netstat -tulpn
并看到nginx没有绑定到端口80的IPv4。做完这里描述的一切。原来是非常愚蠢的事情:
确保实际启用了带sites-available
的default_server
文件。
希望这能节省一些其他可怜的白痴。
您可能需要将nginx绑定到端口80两次。那是你的完整配置文件吗?你有没有另一个声明听80端口?
我发现通过以下步骤来调试nginx很有帮助:
1 ...确保nginx正在运行。
ps aux | grep nginx
2 ...检查已绑定到相关端口的进程。
lsof -n -i:80
3 ...确保已重新加载nginx。
sudo nginx -t
sudo nginx -s reload
在Mac上,
brew services restart nginx
不足以重新加载nginx。
4 ...尝试手动创建简单的响应,以确保您的位置路径没有搞砸。当使用proxy_pass
将请求转发给其他正在运行的应用程序时出现问题时,这尤其有用。
location / {
add_header Content-Type text/html;
return 200 'Here I am!';
}
在;
失踪的半结肠/etc/nginx/nginx.conf
在include /etc/nginx/servers-enabled/*;
之前的线上可以绕过这个意图和nginx -t
检查将是成功的无论如何。
因此,请检查/etc/nginx/nginx.conf
中的所有指令是否以分号;
结束。
你检查过你的nginx二进制文件是否真的存在吗?请检查是否
#whereis nginx
输出二进制路径并使用/etc/init.d/nginx中的init脚本检查此路径。例如
DAEMON=/usr/sbin/nginx
(在我的init脚本中,“test -x $ DAEMON || exit 0”被调用,无论如何这个脚本什么都没有返回 - 我的二进制文件完全丢失了)
在我的情况下,那些网络命令的输出显示nginx正确绑定到端口80,但端口不能从外部访问或使用nmap
可见。
虽然我怀疑是防火墙,但事实证明机器上的旧iptables
规则正在重定向来自这些端口的流量并与nginx冲突。使用sudo iptables-save
查看所有当前适用的规则。