2013-04-01 6 views
1

Под моим доменом, скажем example.com, я хочу иметь целевую страницу (которая будет отображаться при попадании example.com), в блог WordPress (который будет жить в blog.example.com) и мое резюме в формате HTML (которое будет жить в resume.example.com). Используя nginx, я хочу иметь три отдельных файла .conf, чтобы я мог раздвигать их вверх и вниз друг от друга. DNS настроен таким образом, что «резюме» и «блог» являются A-записями для example.com.Несколько субдоменов файлов .conf с использованием nginx

Я запускаю это на Linode, поэтому у меня есть полный контроль над DNS и веб-сервером. Однако, когда я пытаюсь разбить запись nginx .conf для blog.example.com в отдельный файл, я получаю перенаправление от blog.example.com до www.example.com, когда я ударил его в веб-браузере.

Я знаю, что установка WordPress не проблема, потому что, когда все три записи сервера находятся в одном файле nginx, все работает нормально. Я также попытался создать отдельную структуру папок для блога (blogs-available и blogs-enabled), в том числе те папки в nginx.confдо, включая sites-enabled, но это тоже не сработало. Это оставляет мне два вопроса:

  1. Есть ли у кого-нибудь предложения по работе? Возможно, мои настройки DNS неверны.

  2. Означает ли nginx порядок загрузки или он неоднозначен? Если это последний, то я буду хранить все в одном блоке сервера и либо все они, либо все.

UPDATE:

nginx.conf для example.com:

# Blog (WordPress site - blog.example.com) 
server { 
    listen <ip-address>; 
    server_name blog.example.com; 
    root /www/blog.example.com/public_html/current; 

    access_log /www/blog.example.com/logs/access.log; 
    error_log /www/blog.example.com/logs/error.log; 

    location/{ 
    index index.html index.htm index.php; 
    try_files $uri $uri/ /index.php; 
    } 

    location ~ \.php$ { 
    include /etc/nginx/fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /www/blog.example.com/public_html/current/$fastcgi_script_name; 

    if ($uri !~ "^/images/") { 
     fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket; 
    } 
    fastcgi_index index.php; 
    } 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
    expires max; 
    log_not_found off; 
    } 
} 

# redirect example.com to www.example.com 
server { 
    listen <ip-address>; 
    server_name example.com; 
    rewrite ^(.*)$ $scheme://www.example.com$request_uri? permanent; 
    break; 
} 

# static site - www.example.com 
server { 
    listen <ip-address>; 
    server_name www.example.com; 
    # static HTML/soon-to-be Sinatra site 
    root /www/example.com/public_html/current/public; 

    access_log /www/example.com/logs/access.log; 
    error_log /www/example.com/logs/error.log; 
} 

Примечание: Я не имею resume.example.com сайт выше, но это должно быть тривиальным. Кроме того, вышеизложенное работает в любом порядке, поэтому я не считаю, что это проблема с перенаправлением.

** второе обновление **

На догадке я закомментирована следующее в моем файле example.com конф:

server { 
    listen <ip-address>:80; 
     server_name example.com; 
     rewrite ^(.*)$ $scheme://www.example.com$request_uri? permanent; 
     break; 
    } 

И это сработало, как я ожидал. Есть ли что-то не так с моим правилам перенаправления не www -> www выше?

+0

Это переадресация 301 или только контент с www.example.com? Отправьте здесь свой файл конфигурации, и мы можем предложить более конкретное предложение. Кстати, это должна быть простая настройка в nginx для поддержки нескольких доменов на одном сервере. –

+0

Добавлен nginx.conf. – CDub

+0

nginx conf в порядке. Обновлен мой ответ. –

ответ

0

Для второго вопроса конфигурация nginx является декларативной. Заказ блока сервера не имеет значения. Поэтому управлять каждым блоком сервера легко в своем собственном .conf-файле.

UPDATE После просмотра файла конфигурации Nginx

не может найти ничего плохого с файлом Nginx конф. Пробовал это в моем devbox, и он работал нормально. Таким образом, это может быть установка dns. Одна из возможностей заключается в том, что вы настраиваете «блог» как запись CNAME «www» (запись cname является псевдонимом). например,

blog IN CNAME www 

Если это так, веб-браузер отправит http://blog.example.com в http://www.example.com.

Также обратите внимание, что запись DNS может быть кэширована в вашем браузере или на вашем сервере isp dns. Даже если вы исправляете это на некоторое время, неправильная запись может быть кэширована. Попробуйте

dig blog.example.com 

Чтобы получить информацию о настройке dns.

+0

Когда я делаю 'dig blog.example.com', я возвращаюсь' blog.example.com В A '... IP-адрес - это тот же IP-адрес, что и все другие сайты, которые живут на этом IP-адресе. Нужна ли мне отдельная запись DNS для 'blog.example.com'? – CDub

+0

Запись DNS хороша тогда. У вас есть перенаправления внутри вашего php-кода, который может жестко указывать имя домена перенаправления? –

+0

Нет. Кажется, что перенаправление для домена, отличного от www, может ловить часть «блога» URL-адреса и перенаправлять его. Это возможно? – CDub

Смежные вопросы