Jak uruchomić Nginx przez inny port (inny niż 80)

129

Cześć, jestem nowicjuszem na nginx, próbowałem ustawić go na moim serwerze (z systemem Ubuntu 4), na którym już działa apache.

Więc po apt-get installtym, próbowałem uruchomić nginx. Wtedy otrzymuję taką wiadomość:

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)

Ma to sens, ponieważ Apache używa portu 80.

Potem próbowałem zmodyfikować nginx.conf, odsyłam do niektórych artykułów, więc zmieniłem to tak:

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

Po zapisaniu tego i ponownej próbie uruchomienia nginx nadal pojawia się ten sam błąd, co poprzednio. Naprawdę nie mogę znaleźć powiązanego posta na ten temat, czy jacyś dobrzy ludzie mogą rozbić trochę światła?

Z góry dziękuję :)

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

Powinienem zamieścić całą zawartość w conf tutaj:

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

W zasadzie nic nie zmieniłem poza dodaniem części serwerowej.

Zhao Peng
źródło
Czy masz tę samą wiadomość. Może port został zmieniony na inny? Czy próbowałeś uruchomić nginx przez sudo?
dmr
W przypadku centów ten link może pomóc serverfault.com/questions/566317/ ...
vintuwei
Możesz odnieść się do tego przy użyciu portów innych niż 80 w NGINX
Shomaail
Możesz odnieść się do tego przy użyciu portów innych niż 80 w NGINX
Shomaail

Odpowiedzi:

183

Musisz iść do /etc/nginx/sites-enabled/i jeśli jest to domyślna konfiguracja, to nie powinno być plik o nazwie: default.

Edytuj ten plik, definiując żądany port; w poniższym fragmencie obsługujemy instancję Nginx na porcie 81.

server {
    listen 81;
}

Aby uruchomić serwer, uruchom poniższą linię poleceń;

sudo service nginx start

Możesz teraz uzyskać dostęp do aplikacji na porcie 81 (dla localhost, http: // localhost: 81 ).

Chamith Malinda
źródło
Alternatywnie, jeśli nie masz zainstalowanej usługi (zwykle OS X), możesz uruchomić: sudo nginx -s reload
John Paul Barbagallo
Może być konieczne ponowne uruchomienie, jeśli nginx już działasudo service nginx restart
depicus
3
Podczas próby z portem 81 pojawia się błąd: „Ta strona internetowa jest niedostępna ERR_CONNECTION_TIMED_OUT”, ale przy 80 działa dobrze.
Darius.V
Zrobiłem to, ale kiedy uruchamiam netstat, nadal coś nasłuchuje na porcie 80. Masz jakiś pomysł?
Mustafa Chelik
Sprawdź także domyślne w/etc/nginx/sites-available directory
Amit Teli
22

Będziesz musiał zmienić konfigurację portu Apache lub Nginx. Po wykonaniu tej czynności konieczne będzie ponowne uruchomienie zrekonfigurowanych serwerów za pomocą użytego polecenia „service”.


Apache

Edytować

sudo subl /etc/apache2/ports.conf 

i zmień 80 w następującym wierszu na coś innego:

Listen 80

Jeśli po prostu zmienisz port lub dodasz tutaj więcej portów, prawdopodobnie będziesz musiał również zmienić instrukcję VirtualHost w

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

i zmień 80 w następującym wierszu na coś innego:

<VirtualHost *:80>

następnie uruchom ponownie przez:

sudo service apache2 restart

Nginx

Edytować

/etc/nginx/sites-enabled/default

i zmień 80 w następującym wierszu:

listen 80;

następnie uruchom ponownie przez:

sudo service nginx restart
Marco Schoolenberg
źródło
21

Postępuj zgodnie z tym: Otwórz plik konfiguracyjny

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

Zmień numer portu, na którym nasłuchujesz;

listen       81;
server_name  localhost;

Dodaj regułę do iptables

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

Zrestartuj IPtables

 service iptables restart;

Zrestartuj serwer nginx

service nginx restart

Uzyskaj dostęp do plików serwera nginx na porcie 81

sinshiva
źródło
1
Mój problem został rozwiązany tą metodą, która była prawie podobna do Ciebie.
sinshiva
Do Twojej wiadomości: prawidłowa nazwa pliku dla nginx pod Windows to conf \ nginx.conf
Johnny Bigoode
Nie ma znaczenia, jaka jest nazwa pliku konfiguracyjnego, ponieważ pochodzi cały plik konfiguracyjny.
sinshiva
3

Jeśli korzystasz z systemu Windows, poniższe ustawienia serwera związane z portami są obecne w pliku nginx.conf w folderze <ścieżka instalacji nginx> / conf .

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

Zmień numer portu i uruchom ponownie instancję.

skvp
źródło
1

Jeśli napotykasz ten problem podczas korzystania z platformy Docker, pamiętaj o zmapowaniu poprawnych numerów portów. Jeśli mapujesz port 81:80 podczas uruchamiania docker (lub przez docker-compose.yml), twój nginx musi nasłuchiwać na porcie 80, a nie 81, ponieważ docker już mapuje .

Sam spędziłem trochę czasu nad tym problemem, więc mam nadzieję, że przyda się to przyszłym pracownikom Google.

thephper
źródło