你好,我是 nginx 的新手,我尝试在我的服务器(运行 Ubuntu 4)上进行设置,该服务器已经运行有 apache。
完成之后apt-get install
,我尝试启动 nginx。然后我收到如下消息:
Starting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
这是有道理的,因为 Apache 正在使用端口 80。
然后我尝试着修改一下nginx.conf
,参考了一些文章,所以我改成这样:
server {
listen 8080;
location / {
proxy_pass http://94.143.9.34:9500;
proxy_set_header Host $host:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
保存后再次尝试启动 nginx,仍然出现与之前相同的错误。我找不到与此相关的帖子,有哪位好心人能指点一下吗?
我应该在这里发布 conf 中的所有内容:
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen 81;
location / {
proxy_pass http://94.143.9.34:9500;
proxy_set_header Host $host:81;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
}
mail {
# See sample authentication script at:
# http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
auth_http localhost/auth.php;
pop3_capabilities "TOP" "USER";
imap_capabilities "IMAP4rev1" "UIDPLUS";
server {
listen localhost:110;
protocol pop3;
proxy on;
}
server {
listen localhost:143;
protocol imap;
proxy on;
}
}
基本上,除了添加服务器部分之外,我没有做任何改变。
答案1
看来您保留了sites_enabled
文件夹中的默认服务器配置。
有问题的文件有很多注释掉的行,但不是全部 - 默认配置在其中纠缠在一起。我建议你删除整个文件(或者如果所有配置都在同一个文件中,则删除第一部分)。
但是,如果您在那里找不到它,我建议您搜索 80。它一定在 nginx 配置文件的某个地方。
答案2
我正在使用 VMWare,遇到了同样的错误。
我删除了 sites_enabled 的默认配置,还删除了:
listen [::]:80
...来自我的配置文件(以前 MacPorts 需要)。我不确定 VMWare 监听哪个端口,但它不喜欢 80!