65

我正在尝试启动我的 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;
  }
}
4

9 回答 9

191

首先,始终sudo nginx -t验证您的配置文件是否良好。

我遇到了同样的问题。我有这个问题的原因是双重的。首先,我不小心将一个日志文件复制到了启用站点的文件夹中。我删除了日志文件并确保启用站点的所有文件都是正确的 nginx 站点配置。我还注意到我的两个虚拟主机正在侦听同一个域。所以我确保我的每个虚拟主机都有唯一的域名。

sudo service nginx restart

然后它起作用了。

于 2013-10-29T20:21:52.293 回答
10

您可能应该检查/var/log/nginx/error.log.

就我而言,我没有为 ipv6 添加端口。您也应该这样做(如果您在 80 以外的端口上运行 nginx): listen [::]:8000 default_server ipv6only=on;

于 2015-09-29T04:19:35.843 回答
5

在您的/etc/nginx/nginx.conf文件中,您有:

include /etc/nginx/site-enabled/*;

您使用的路径可能是:

/etc/nginx/sites-enabled/default

注意站点中缺少的 s

于 2014-03-28T15:44:44.163 回答
5

一种情况是,您检查 nginx 默认情况下在系统中保持 80 号端口,检查您是否有任何服务器(如 apache)或系统上是否存在阻止 80 号端口的系统,即问题发生。

1.你通过这种方式更改nginx上的端口号,

sudo vim /etc/nginx/sites-available/default

将 80 更改为 81 或其他任何内容,

  1. 检查一切正常,

须藤 nginx -t

  1. 重启服务器

sudo 服务 nginx 启动

  1. 检查nginx的状态:

sudo 服务 nginx 状态

希望这会奏效

于 2017-02-15T05:37:11.897 回答
3

检查 nginx.conf 文件中的守护进程选项。它必须打开。或者你可以简单地从配置文件中删除这一行。此选项在此处进行了完整描述http://nginx.org/en/docs/ngx_core_module.html#daemon

于 2013-08-08T11:33:12.173 回答
1

1.通过运行上述命令检查您的配置文件:sudo nginx -t.

2.检查端口冲突。例如,如果apache2 ( ps waux | grep apache2) 或任何其他服务使用为 nginx 配置的相同端口(例如端口 80),则该服务将无法启动并且会静默失败(错误...我朋友的表弟遇到了这个问题...)

于 2016-03-18T10:14:16.530 回答
1

如果您有apache2并且它在您配置的相同设备上运行,port[80]即使nginx您收到成功消息,您也会收到错误消息ngingx -t。正确的方法是您只有一个网络服务器,但如果您不能这样做,请使用以下方式:

第一站apache2:

sudo sytemctl stop apache2

然后重启nginx:

sudo service nginx restart

检查apache2和nginx的状态:

sudo systemctl status apache2

sudo systemctl status nginx
于 2021-12-28T07:58:34.860 回答
0

我的实例遇到了完全相同的问题。我的问题是我忘记允许端口 80 访问服务器。也许这也是你的问题?

检查您的 WHM 并确保该端口已为您网站的 IP 地址打开,

于 2014-07-21T19:40:08.450 回答
0

nginx.conf对于它的价值:编辑文件后,我遇到了同样的问题。我尝试并尝试通过命令sudo nginx restart和其他各种命令重新启动它。他们都没有产生任何输出。命令sudo nginx -t检查配置文件给出了输出sudo: nginx: command not found,令人费解。我开始认为路径有问题。

最后,我以 root ( sudo su) 身份登录并命令sudo nginx restart. 现在,该命令显示有关配置文件的错误消息。修复后,它重新启动成功。

于 2014-11-21T17:22:36.547 回答