Настройка редиректа с www на без www в Nginx для всех доменов

Главные вкладки

Аватар пользователя Valeratal Valeratal 28 февраля 2015 в 18:46

Такой вопрос

Прочитал на хабре, что можно настроить для всех доменов сразу редирект с www на без www

http://habrahabr.ru/post/39801/

В частности предлагается прописать

Чтобы не указывать это правило для каждого домена можно воспользоваться отрицательным регулярным выражением:

server {
  server_name ~^(?! www\.);
  rewrite ^ http://www.$host$request_uri permanent;
}

Я пытаюсь прописать в конфиге своего нжинса, но как-то, каждый раз разные глюки, то распознать не может, то еще что-то

Вот мой конфиг

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
       
    client_max_body_size 32m;

    include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/vhosts/*/
*;
        server {
                server_name localhost;
        disable_symlinks if_not_owner;
        listen 80;
        include /etc/nginx/vhosts-includes/*.conf;
       
        location fallback {
                error_log /dev/null crit;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Secret AEvSidZvUufsMmMB;
                access_log off ;
        }
        }
       
}

я пытался добавить и после server и ниже acess_log, но все никак

Ошибки в логах
2015/02/28 17:48:53 [emerg] 2082#0: "server_name" directive is not allowed here in /etc/nginx/nginx.conf:52
2015/02/28 18:02:58 [emerg] 2093#0: pcre_compile() failed: missing ) in "^(?!" in /etc/nginx/nginx.conf:41
2015/02/28 18:07:12 [emerg] 2087#0: pcre_compile() failed: missing ) in "^(?!" in /etc/nginx/nginx.conf:53
2015/02/28 18:14:29 [emerg] 2095#0: "server_name" directive is not allowed here in /etc/nginx/nginx.conf:53
2015/02/28 18:23:38 [emerg] 2081#0: pcre_compile() failed: missing ) in "^(?!" in /etc/nginx/nginx.conf:37

Подскажите, куда это правильно надо правильно прописывать. Устал уже методом тыка Smile

Комментарии

Аватар пользователя bsyomov bsyomov 1 марта 2015 в 12:57

Не получится прописать глобально - директива server_name имеет смысл только в контексте секции server.
Т.е. вам придётся прописать такое правило в каждом их ваших конфигов в /etc/nginx/vhosts/*/*