如何通过其他端口(而不是80)启动Nginx


128

嗨,我是nginx上的新手,我试图在已经运行apache的服务器上(运行Ubuntu 4)对其进行设置。

因此,在完成之后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;
     }
 }

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


你有同样的消息吗?可能端口已更改为另一个端口?您是否尝试通过sudo运行nginx?
dmr

为CentOS,这个链接可以帮助serverfault.com/questions/566317/...
vintuwei

您可以在NGINX
Shomaail

您可以在NGINX
Shomaail

Answers:


182

您必须转到/etc/nginx/sites-enabled/,如果这是默认配置,则应该有一个名称为的文件default

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

server {
    listen 81;
}

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

sudo service nginx start

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


或者,如果您未安装服务(通常为OS X),则可以运行: sudo nginx -s reload
John Paul Barbagallo 2014年

如果nginx已经在运行,则可能需要重新启动sudo service nginx restart
depicus 2014年

3
尝试使用81端口时,Chrome浏览器出现错误:“此网页不可用ERR_CONNECTION_TIMED_OUT”,但使用80端口则可以正常工作。
Darius.V 2015年

我这样做了,但是当我运行时netstat,端口80上仍有监听的声音。您有任何想法吗?
Mustafa Chelik '16

还要检查默认设置/etc/nginx/sites-available directory
阿米特利(Amit Teli)'18年

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

20

请遵循以下步骤:打开您的配置文件

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上访问yr nginx服务器文件


1
使用与您几乎相似的方法解决了我的问题。
sinshiva 2015年

仅供参考:Windows下nginx的正确文件名是conf \ nginx.conf
Johnny Bigoode

conf文件的名称无所谓,因为整个conf目录都是源文件。
sinshiva '17

3

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

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

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


1

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

我本人在这个问题上花费了很多时间,希望对将来的Google员工有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.