server_name olmadan nginx ve sadece statik ip adresi kullanarak?


34

bu benim ilk web uygulaması dağıtımım ve her türlü sorunla karşı karşıyayım.

Şu anda Django uygulaması için nginx + gunicorn uygulaması için gidiyorum, ancak çoğunlukla bu soru nginx yapılandırmaları ile ilgilidir. Bazı bağlamlar için - nginx, gunicorn yerel sunucusuna bağlantı ve proxy alacak.

nginx yapılandırmalarında, server_namebir tane sağlamalı mıyım? Ağımın harici ip (statik) ve dinlemek için port numarası üzerinden herhangi bir etki alanı adını kullanmayı planlamıyorum.

Benim arzum şunun gibi bir şeye eriştiğimde http://xxx.xxx.xxx.xxx:9050siteyi alabilmemdir.

Aşağıda yapılandırma için referansları temel alacağım örnek kod verilmiştir.

   server {
        listen   80;
        server_name WHAT TO PUT HERE?;

    root /path/to/test/hello;

    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /path/to/test/lib/python2.6/site-packages/django/contrib;
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
        # what to serve if upstream is not available or crashes
        error_page 500 502 503 504 /media/50x.html;
     }

Yanıtlar:


31

server_namevarsayılan olarak iyi olan boş bir dizeye; tamamen dışlayabilirsiniz.

"Buna bir isim koymak istemiyorum" ihtiyacı için başka bir yaygın yaklaşım kullanmaktır server_name _;

Sizin http://xxx.xxx.xxx.xxx:9050URL geneli, gerçi çalışmaz; sadece 80 numaralı bağlantı noktasını dinliyorsunuz. Bir de eklemeniz gerekir listen 9050;.



biraz ilgili
— Muhammad Umer

5

sunucu adı _; joker değil, buraya bakınız:

http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server

sadece ip erişimi için default_server yönergesini belirtin (bkz. http://nginx.org/en/docs/http/request_processing.html )

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }

2
Yararlı bilgi parçasına basitçe bağlanmaktan ve cevabınıza server_name _;dahil etmekten caydırılır - bu durumda eşleşmiyordur .
— BE77Y

1
"joker karakter değil" == "eşleşmeyen". Eminim alacaklar.
— Joe,

2
İki eşit değildir; Eşleşmeyen, başka hiçbir şey eşleşmediğinde servis edilir; joker karakter ise her şeyle eşleşir. Ancak buradaki nokta, yararlı bilgilerin cevabında, başka bir siteyle bağlantılı olmamasına (bu sitede iyi sunulmuş olmasına rağmen), burada
— BE77Y

Mesele şu ki, bu 'iyi bir cevap' değil, bir cevap. Üzgünüm, zaman yok. Düzenlemek / yeniden yazmak isterseniz, size tam izin veriyorum. Aksi takdirde, ne yapacaklarını tam olarak bilecekler ve bu yardımcı olacaktır. Cevaplamaktan çekinmeyin, aksi takdirde cevap geçerli olur.
— Joe,

3
İlgili bilgilere fazladan bir satır eklemek için 'zamanınız yoksa', 3 yaşındaki bir yazıyı neden kabul edilmiş bir cevapla cevaplamak için uğraştığınızı dürüstçe bilmiyorum!
— BE77Y

4

Uygulamanızın belirli bir ana bilgisayar adı olmadan 9050 numaralı bağlantı noktasında yanıt vermesini istiyorsanız, sunucu_adı atlayabilirsiniz, Nginx ilk önce dinleme girişini düzelttiği için, sonra da sunucu_adı gerekli değildir:

server {
   listen 9050;

   .....
}

Daha fazla ayrıntı burada: Nginx server_name ve nasıl çalıştığını

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.