Nginx 没有运行,没有错误信息
Posted
技术标签:
【中文标题】Nginx 没有运行,没有错误信息【英文标题】:Nginx not running with no error message 【发布时间】:2013-07-25 10:37:18 【问题描述】:我正在尝试启动我的 nginx 服务器。 当我输入“$> /etc/init.d/nginx start”时,出现一条消息“正在启动 nginx:”,然后什么也没有发生。没有错误信息,当我检查 nginx 的状态时,我发现它没有运行。
这是我的 /etc/nginx/nginx.conf 文件:
worker_processes 4;
daemon off;
error_log /home/vincent/tmp/nginx.log;
pid /home/vincent/tmp/nginx.pid;
events
worker_connections 1024;
http
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /home/vincent/tmp/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/site-enabled/*;
这是我的 /etc/nginx/sites-available/default 文件:
server
listen 80;
server_name technical-test.neo9.lan;
access_log /var/log/nginx/technical-test.neo9.lan.log main;
set $home /home/vincent;
location /
alias $home/neo9/web/app/;
index index.html;
location /api/
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:1234;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
【问题讨论】:
你试过service nginx configtest
吗?
使用这个命令给我这个答案:“测试 nginx 配置:nginx。”
而“sudo nginx -t”给了我: nginx:配置文件/etc/nginx/nginx.conf 语法没问题 nginx:配置文件/etc/nginx/nginx.conf 测试成功
你也试过用 sudo 启动 nginx 吗?
我总是用 sudo 启动它,否则当它尝试访问 error.log 文件时会出现权限被拒绝的错误
【参考方案1】:
首先,始终sudo nginx -t
验证您的配置文件是否正确。
我遇到了同样的问题。我有这个问题的原因是双重的。首先,我不小心将一个日志文件复制到了启用站点的文件夹中。我删除了日志文件并确保启用站点的所有文件都是正确的 nginx 站点配置。我还注意到我的两个虚拟主机正在侦听同一个域。所以我确保我的每个虚拟主机都有唯一的域名。
sudo service nginx restart
然后它起作用了。
【讨论】:
sudo nginx -t
是一个很棒的提示 :)
正如你(@badmadrad)所说,我通过运行sudo nginx -t
.得到了以下信息。但是当我尝试重新启动它时仍然失败。 ferdinand@ferdinand-desktop:~$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ferdinand@ferdinand-desktop:~$ sudo service nginx restart * Restarting nginx nginx [fail]
确保您的站点启用只有 nginx conf 文件。还要确保启动nginx时没有端口冲突。【参考方案2】:
您应该检查/var/log/nginx/error.log
中的错误。
就我而言,我没有为 ipv6 添加端口。您也应该这样做(如果您在 80 以外的端口上运行 nginx):
listen [::]:8000 default_server ipv6only=on;
【讨论】:
【参考方案3】:在您的 /etc/nginx/nginx.conf
文件中,您有:
include /etc/nginx/site-enabled/*;
你使用的路径可能是:
/etc/nginx/sites-enabled/default
请注意站点中缺少的 s。
【讨论】:
【参考方案4】:如果您检查 nginx 默认情况下在系统中保留 80 号端口,请检查您是否有像 apache 这样的服务器或系统上是否存在阻止 80 号端口的任何东西,这就是问题发生的原因。
1.你通过这种方式更改nginx上的端口号,
sudo vim /etc/nginx/sites-available/default
把 80 改成 81 什么的,
-
检查一切正常,
sudo nginx -t
-
重启服务器
sudo 服务 nginx 启动
-
查看nginx状态:
sudo 服务 nginx 状态
希望能成功
【讨论】:
是的,他是正确的,如果您在端口 80 上托管了一些东西,那么它将无法工作。就我而言,我在 80 上托管了 apache2。尝试按照他的建议更改端口号。谢谢【参考方案5】:检查 nginx.conf 文件中的守护进程选项。它必须打开。或者你可以简单地从配置文件中删除这一行。此选项在此处进行了完整描述http://nginx.org/en/docs/ngx_core_module.html#daemon
【讨论】:
就是这样。谢谢!【参考方案6】:1.通过运行上述命令检查您的配置文件:sudo nginx -t
。
2. 检查端口冲突。例如,如果 apache2 (ps waux | grep apache2
) 或任何其他服务正在使用为 nginx 配置的相同端口(例如端口 80),则该服务将不会启动并且会静默失败(错误...堂兄我的朋友有这个问题...)
【讨论】:
【参考方案7】:如果您有apache2
并且它运行在您在nginx
中配置的同一port[80]
上,即使您在ngingx -t
上收到成功消息,您也会收到错误消息。
正确的做法是你只有一个网络服务器,但如果你不能这样做,使用这种方式:
第一站apache2:
sudo sytemctl stop apache2
然后重启nginx:
sudo service nginx restart
查看apache2和nginx的状态:
sudo systemctl status apache2
sudo systemctl status nginx
【讨论】:
【参考方案8】:我的实例遇到了完全相同的问题。我的问题是我忘记允许端口 80 访问服务器。也许这也是你的问题?
检查您的 WHM 并确保该端口已为您网站的 IP 地址打开,
【讨论】:
你能解释一下吗 这意味着要访问页面的地址,您需要允许HTTP端口80上的流量到您的服务器实例。要启用它,如果您使用 AWS,您可以编辑安全组中的入站规则。对于 Google cluod,您可以在防火墙中进行编辑。如果您使用的是数字海洋、Azure 或 IBM 云等任何其他服务,或者类似设置。【参考方案9】:值得一提的是:在编辑 nginx.conf
文件后,我也遇到了同样的问题。我尝试并尝试通过命令sudo nginx restart
和其他各种命令重新启动它。他们都没有产生任何输出。命令sudo nginx -t
查看配置文件,输出sudo: nginx: command not found
,令人费解。我开始认为路径有问题。
最后,我以 root 身份登录 (sudo su
) 并命令sudo nginx restart
。现在,该命令显示有关配置文件的错误消息。修复后,它重新启动成功。
【讨论】:
以上是关于Nginx 没有运行,没有错误信息的主要内容,如果未能解决你的问题,请参考以下文章
网页出现“504 Gateway Time-out”,没有其它信息是啥原因?
vs2005 SP1发布网站时发布失败,没有错误信息,没有警告信息。怎么解决啊?
Django + nginx + gunicorn 给出 502 错误。日志信息很少[关闭]