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.