Под моим доменом, скажем 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
, но это тоже не сработало. Это оставляет мне два вопроса:
Есть ли у кого-нибудь предложения по работе? Возможно, мои настройки DNS неверны.
Означает ли 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 выше?
Это переадресация 301 или только контент с www.example.com? Отправьте здесь свой файл конфигурации, и мы можем предложить более конкретное предложение. Кстати, это должна быть простая настройка в nginx для поддержки нескольких доменов на одном сервере. –
Добавлен nginx.conf. – CDub
nginx conf в порядке. Обновлен мой ответ. –