nginx sem server_name e usando apenas endereço IP estático?

22

esta é a minha primeira implantação de aplicativo da web e estou em todos os tipos de problemas.

Atualmente estou indo para uma implementação nginx + gunicorn para o aplicativo Django, mas a maior parte dessa questão está relacionada a configurações nginx. Para algum contexto - o nginx receberia conexões e proxy para o servidor local do gunicorn.

nas configurações do nginx, onde diz server_name tenho que fornecer uma? Eu não pretendo usar nomes de domínio de qualquer tipo, apenas através do ip externo da minha rede (é estático) e do número da porta para ouvir.

Meu desejo é que, quando eu acessar algo como http://xxx.xxx.xxx.xxx:9050 , eu consiga acessar o site.

A seguir, o código de exemplo no qual basearemos as configurações para referência.

   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;
     }
    
por bash- 19.01.2012 / 17:31

3 respostas

24

server_name é padronizado para uma string vazia, o que é bom; você pode excluí-lo completamente.

Outra abordagem comum para a necessidade "Não quero colocar um nome nessa necessidade" é usar server_name _;

Seu http://xxx.xxx.xxx.xxx:9050 URL não funcionará com essa configuração; você só está ouvindo na porta 80. Você também precisa adicionar um listen 9050; .

    
por 19.01.2012 / 17:35
5

nome_do_servidor _; não é um curinga, veja aqui:

link

apenas especifique a diretiva default_server para acesso somente ip (consulte link )

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }
    
por 20.02.2015 / 06:55
1

Se você deseja que seu aplicativo responda na porta 9050 sem nome de host específico, pode ignorar server_name, não é necessário, pois o Nginx resolve primeiro a entrada de escuta e, em seguida, server_name, se presente:

server {
   listen 9050;

   .....
}

Mais detalhes aqui: Nginx server_name e como funciona

    
por 15.04.2017 / 18:31