Nginx'i farklı bağlantı noktası üzerinden nasıl başlatılır (80 dışında)


128

Merhaba nginx'te acemi biriyim, zaten apache'nin çalıştığı sunucumda (Ubuntu 4 çalıştıran) kurmaya çalıştım.

Ben de apt-get installondan sonra nginx'i başlatmaya çalıştım. Sonra şu mesajı alıyorum:

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'nin 80 numaralı bağlantı noktasını kullandığı için bu mantıklı.

Sonra değiştirmeye çalıştım nginx.conf, bazı makalelere atıfta bulundum, bu yüzden onu şu şekilde değiştirdim:

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

Bunu kaydettikten ve nginx'i yeniden başlatmayı denedikten sonra, yine de önceki gibi aynı hatayı alıyorum. Bununla ilgili gerçekten ilgili bir yazı bulamıyorum, herhangi bir iyi insan biraz ışık tutabilir mi?

Şimdiden teşekkürler :)

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

Tüm içeriği burada conf olarak göndermeliyim:

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

Temel olarak, sunucu kısmını eklemek dışında hiçbir şeyi değiştirmedim.


Aynı mesajın var mı? Liman başka bir limana dönüşmüş olabilir mi? Nginx'i sudo ile çalıştırmayı denediniz mi?
dmr

Centos için, bu bağlantı serverfault.com/questions/566317/…
vintuwei

Buna NGINX
Shomaail

Buna NGINX
Shomaail

Yanıtlar:


182

Sen gitmek zorunda /etc/nginx/sites-enabled/ve bu varsayılan yapılandırma ise, o zaman adıyla bir dosya olmalıdır: default.

İstediğiniz bağlantı noktasını tanımlayarak bu dosyayı düzenleyin; aşağıdaki ön bilgide, Nginx örneğini 81 numaralı bağlantı noktasında sunuyoruz.

server {
    listen 81;
}

Sunucuyu başlatmak için aşağıdaki komut satırını çalıştırın;

sudo service nginx start

Artık uygulamanıza 81 numaralı bağlantı noktasından erişebilirsiniz (localhost için, http: // localhost: 81 ).


Alternatif olarak, eğer kurulu bir hizmetiniz yoksa (OS X, genellikle) şunları çalıştırabilirsiniz: sudo nginx -s reload
John Paul Barbagallo

Nginx zaten çalışıyorsa yeniden başlatmanız gerekebilirsudo service nginx restart
2014

3
81 bağlantı noktasıyla çalışırken Chrome'da hata alıyorum: "Bu web sayfası mevcut değil ERR_CONNECTION_TIMED_OUT" ancak 80 ile iyi çalışıyor.
Darius.V

Bunu yaptım ama koştuğumda netstathala 80 numaralı bağlantı noktasında dinleyen bir şeyler var. Herhangi bir fikrin var mı?
Mustafa Çelik

Ayrıca varsayılanı kontrol edin/etc/nginx/sites-available directory
Amit Teli

22

Apache veya Nginx'in yapılandırma bağlantı noktasını değiştirmeniz gerekecektir. Bunu yaptıktan sonra, kullandığınız 'servis' komutunu kullanarak yeniden yapılandırılmış sunucuları yeniden başlatmanız gerekecektir.


Apaçi

Düzenle

sudo subl /etc/apache2/ports.conf 

ve aşağıdaki satırdaki 80'i farklı bir şeye değiştirin:

Listen 80

Yalnızca bağlantı noktasını değiştirirseniz veya buraya daha fazla bağlantı noktası eklerseniz, muhtemelen VirtualHost ifadesini de değiştirmeniz gerekecektir.

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

ve aşağıdaki satırdaki 80'i farklı bir şeye değiştirin:

<VirtualHost *:80>

sonra şu şekilde yeniden başlatın:

sudo service apache2 restart

nginx

Düzenle

/etc/nginx/sites-enabled/default

ve aşağıdaki satırda 80'i değiştirin:

listen 80;

sonra şu şekilde yeniden başlatın:

sudo service nginx restart

20

Bunu takip edin: Yapılandırma dosyanızı açın

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

Dinlediğiniz bağlantı noktası numarasını değiştirin;

listen       81;
server_name  localhost;

İptables'a bir kural ekleyin

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

IP tablolarını yeniden başlatın

 service iptables restart;

Nginx sunucusunu yeniden başlatın

service nginx restart

81 numaralı bağlantı noktasından yr nginx sunucu dosyalarına erişin


1
Sorunum size neredeyse benzeyen bu yöntem kullanılarak çözüldü.
sinshiva

Bilginize: Windows altında nginx için doğru dosya adı conf \ nginx.conf olacaktır
Johnny Bigoode

Tüm conf dizini kaynaklandığı için conf dosyasının adının ne olduğu önemli değildir.
sinshiva

3

Sonra liman ilgili sunucu ayarları aşağıda pencerelerde ise dosya mevcuttur nginx.conf de / conf <nginx yükleme yolu> klasörü.

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

Bağlantı noktası numarasını değiştirin ve örneği yeniden başlatın.


1

Docker'ı kullanırken bu sorunu yaşıyorsanız, doğru bağlantı noktası numaralarını eşleştirdiğinizden emin olun. Docker'ı çalıştırırken (veya docker-compose.yml aracılığıyla) 81:80 numaralı bağlantı noktasını eşlerseniz, nginx'inizin 81'i değil 80 numaralı bağlantı noktasını dinlemesi gerekir , çünkü docker eşlemeyi zaten yapar.

Bu konu üzerinde epey zaman harcadım, bu yüzden gelecekteki Google çalışanları için biraz yardımcı olabileceğini umuyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.