148

嗨,我是 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://xx.xx.xx.xx: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;
     }
 }

基本上,除了添加服务器部分之外,我什么也没做。

4

5 回答 5

209

你必须去/etc/nginx/sites-enabled/,如果这是默认配置,那么应该有一个文件名:default.

通过定义所需的端口来编辑该文件;在下面的代码片段中,我们在端口 81 上为 Nginx 实例提供服务。

server {
    listen 81;
}

要启动服务器,请运行以下命令行;

sudo service nginx start

您现在可以在端口 81 上访问您的应用程序(对于 localhost,http://localhost:81)。

于 2012-10-09T12:52:10.093 回答
23

按照这个:打开你的配置文件

vi /etc/nginx/conf.d/default.conf

更改您正在侦听的端口号;

listen       81;
server_name  localhost;

向 iptables 添加规则

 vi /etc/sysconfig/iptables 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT

重启 IPtables

 service iptables restart;

重启nginx服务器

service nginx restart

在端口 81 上访问你的 nginx 服务器文件

于 2015-07-13T09:21:03.673 回答
22

您将需要更改 Apache 或 Nginx 的配置端口。完成此操作后,您需要使用您使用的“服务”命令重新启动重新配置的服务器。


阿帕奇

编辑

sudo subl /etc/apache2/ports.conf 

并将以下行中的 80 更改为不同的内容:

Listen 80

如果您只是更改端口或在此处添加更多端口,您可能还必须更改 VirtualHost 语句

sudo subl /etc/apache2/sites-enabled/000-default.conf

并将以下行中的 80 更改为不同的内容:

<VirtualHost *:80>

然后重新启动:

sudo service apache2 restart

Nginx

编辑

/etc/nginx/sites-enabled/default

并更改以下行的 80 :

listen 80;

然后重新启动:

sudo service nginx restart
于 2013-10-08T14:36:37.100 回答
4

如果您在 Windows 上,则以下端口相关的服务器设置存在于< nginx 安装路径 >/conf文件夹的文件nginx.conf中。

server {
    listen       80;
    server_name  localhost;
....

更改端口号并重新启动实例。

于 2018-11-21T07:15:02.013 回答
3

如果您在使用 Docker 时遇到此问题,请务必映射正确的端口号。如果您在运行 docker(或通过 docker-compose.yml)时映射端口 81:80,则您的 nginx 必须侦听端口 80而不是81,因为 docker 已经完成了映射。

我自己在这个问题上花了很多时间,所以希望它可以对未来的谷歌人有所帮助。

于 2019-08-09T09:29:16.853 回答