So starten Sie nginx über einen anderen Port (außer 80)

128

Hallo, ich bin ein Neuling bei Nginx. Ich habe versucht, es auf meinem Server (unter Ubuntu 4) einzurichten, auf dem bereits Apache ausgeführt wird.

Nachdem ich apt-get installes geschafft hatte, versuchte ich, Nginx zu starten. Dann bekomme ich folgende Nachricht:

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)

Dies ist sinnvoll, da Apache Port 80 verwendet.

Dann habe ich versucht zu ändern nginx.conf, ich verweise auf einige Artikel, also habe ich es so geändert:

   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";
        }

Nachdem ich dies gespeichert und versucht habe, nginx erneut zu starten, wird immer noch der gleiche Fehler wie zuvor angezeigt. Ich kann keinen verwandten Beitrag dazu finden. Könnten gute Leute etwas Licht ins Dunkel bringen?

Danke im Voraus :)

================================================== =======================

Ich sollte den gesamten Inhalt in conf hier posten:

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;
     }
 }

Grundsätzlich habe ich nichts geändert, außer den Serverteil hinzuzufügen.

Zhao Peng
quelle
Hast du die gleiche Nachricht ? Vielleicht hatte sich der Hafen in einen anderen geändert? Haben Sie versucht, Nginx über Sudo auszuführen?
dmr
Für Centos könnte dieser Link helfen serverfault.com/questions/566317/…
vintuwei
Sie können sich darauf beziehen. Verwenden Sie andere Ports als 80 in NGINX
Shomaail
Sie können sich darauf beziehen. Verwenden Sie andere Ports als 80 in NGINX
Shomaail

Antworten:

182

Sie müssen zu gehen /etc/nginx/sites-enabled/und wenn dies die Standardkonfiguration ist, sollte es eine Datei mit Namen geben : default.

Bearbeiten Sie diese Datei, indem Sie den gewünschten Port definieren. Im folgenden Snippet wird die Nginx-Instanz auf Port 81 bereitgestellt.

server {
    listen 81;
}

Führen Sie die folgende Befehlszeile aus, um den Server zu starten.

sudo service nginx start

Sie können jetzt über Port 81 auf Ihre Anwendung zugreifen (für localhost http: // localhost: 81 ).

Chamith Malinda
quelle
Wenn Sie keinen Dienst installiert haben (normalerweise OS X), können Sie alternativ sudo nginx -s reload
Folgendes
Möglicherweise müssen Sie neu starten, wenn sudo service nginx restart
Nginx
3
Beim Versuch mit 81 Port wird eine Chrome-Fehlermeldung angezeigt: "Diese Webseite ist nicht verfügbar. ERR_CONNECTION_TIMED_OUT", aber mit 80 funktioniert es gut.
Darius.V
Ich habe das getan, aber wenn ich laufe netstat, lauscht immer noch etwas auf Port 80. Haben Sie eine Idee?
Mustafa Chelik
Überprüfen Sie auch die Standardeinstellung in/etc/nginx/sites-available directory
Amit Teli
22

Sie müssen den Konfigurationsport von Apache oder Nginx ändern. Nachdem Sie dies getan haben, müssen Sie die neu konfigurierten Server mit dem von Ihnen verwendeten Befehl 'service' neu starten.


Apache

Bearbeiten

sudo subl /etc/apache2/ports.conf 

und ändern Sie die 80 in der folgenden Zeile in etwas anderes:

Listen 80

Wenn Sie hier nur den Port ändern oder weitere Ports hinzufügen, müssen Sie wahrscheinlich auch die VirtualHost-Anweisung in ändern

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

und ändern Sie die 80 in der folgenden Zeile in etwas anderes:

<VirtualHost *:80>

dann neu starten durch:

sudo service apache2 restart

Nginx

Bearbeiten

/etc/nginx/sites-enabled/default

und ändern Sie die 80 in der folgenden Zeile:

listen 80;

dann neu starten durch:

sudo service nginx restart
Marco Schoolenberg
quelle
20

Gehen Sie folgendermaßen vor: Öffnen Sie Ihre Konfigurationsdatei

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

Ändern Sie die Portnummer, die Sie abhören.

listen       81;
server_name  localhost;

Fügen Sie iptables eine Regel hinzu

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

Starten Sie IPtables neu

 service iptables restart;

Starten Sie den Nginx-Server neu

service nginx restart

Greifen Sie auf Ihre Nginx-Serverdateien über Port 81 zu

Sinshiva
quelle
1
Mein Problem wurde mit dieser Methode gelöst, die Ihnen fast ähnlich war.
Sinshiva
Zu Ihrer Information: Der richtige Dateiname für Nginx unter Windows wäre conf \ nginx.conf
Johnny Bigoode
Es spielt keine Rolle, wie die conf-Datei heißt, da das gesamte conf-Verzeichnis bezogen wird.
sinshiva
3

Wenn Sie unter Windows arbeiten, sind die folgenden portbezogenen Servereinstellungen in der Datei nginx.conf im Ordner <nginx-Installationspfad> / conf vorhanden .

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

Ändern Sie die Portnummer und starten Sie die Instanz neu.

skvp
quelle
1

Wenn dieses Problem bei der Verwendung von Docker auftritt, müssen Sie die richtigen Portnummern zuordnen. Wenn Sie Port 81:80 beim Ausführen von Docker (oder über docker-compose.yml) zuordnen, muss Ihr Nginx Port 80 und nicht 81 überwachen , da Docker die Zuordnung bereits durchführt.

Ich habe selbst einige Zeit mit diesem Thema verbracht, also hoffe ich, dass es für zukünftige Googler hilfreich sein kann.

thephper
quelle