Nginx e Django usam o domínio prefixado por www

1

Tentando entender como forçar o www. no meu domínio e redirecionar qualquer coisa como ww.example.com ou test.example.com - > www.example.com

Tudo funciona bem quando eu vou para www.example.com ou example.com, estou apenas tentando me proteger se as pessoas tentarem ir para o domínio errado e eu não precisar adicionar nada além de 'www.example.com 'e' example.com 'no meu django ALLOWED_HOSTS

eu configurei tudo de acordo com:

Como usar o Django One-Click Install Imagem

upstream app_server {
    server 127.0.0.1:9000 fail_timeout=0;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name _;

    keepalive_timeout 5;

    # Your Django project's media files - amend as required
    location /media  {
        alias /home/django/django_project/django_project/media;
    }

    # your Django project's static files - amend as required
    location /static {
        alias /home/django/django_project/django_project/static; 
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;
    }
}
    
por John 29.08.2014 / 02:42

1 resposta

1

Você não definiu nenhuma diretiva de redirecionamento no nginx. Aqui a configuração correta.

#here the redirect section. If server doesn't match www.example.com or example.com, it will redirected to http://www.example.com
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name _;

    return 301 http://www.example.com$request_uri;
}

#your main config files, handles request whenever Host header match www.example.com or example.com
server {
    listen 80;
    listen [::]:80;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name www.example.com;

    keepalive_timeout 5;

    # Your Django project's media files - amend as required
    location /media  {
        alias /home/django/django_project/django_project/media;
    }

    # your Django project's static files - amend as required
    location /static {
        alias /home/django/django_project/django_project/static; 
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;
    }
}
    
por 29.08.2014 / 03:24