Иногда нужно разместить несколько систем в разных поддиректориях одного домена — например, блог на Ghost по адресу /blog, форум на Discourse по адресу /forum, а в корне — основной лендинг. Разберём, как это настроить через Nginx и Apache.
Настройка Ghost для поддиректории
Сначала укажите путь поддиректории в конфигурации Ghost. В файле index.js измените URL для production-режима:
url: 'http://www.yoursite.com/blog/'
Конфигурация Nginx
Отредактируйте файл конфигурации в /etc/nginx/sites-enabled/:
server {
listen 80;
server_name localhost;
location ^~ /blog {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
proxy_redirect off;
}
}
Перезапустите Nginx:
sudo service nginx restart
Редирект non-www на www (Nginx)
Чтобы избежать дублирования контента в поисковиках, настройте редирект с non-www на www:
server {
listen 80;
server_name yoursite.com 159.203.232.146;
return 301 $scheme://www.yoursite.com$request_uri;
}
Конфигурация Apache
Для Apache добавьте в файл /etc/httpd/conf/httpd.conf:
ProxyPreserveHost On ProxyPass /blog/ http://127.0.0.1:2368/blog/ ProxyPassReverse /blog/ http://127.0.0.1:2368/blog/
Редирект non-www на www через .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
Конфигурации SSL-сертификатов строятся по аналогичным принципам — просто добавьте listen 443 и укажите пути к сертификатам в соответствующих блоках.