воскресенье, 1 декабря 2013 г.

Добавление виртуальных хостов apache+nginx

Имеется сервер в связке apache+nginx и домен example.com.
Допустим, мы хотим сделать один сайт на поддомене blog.example.com, а второй сайт на example.com.
Для этого нужно настроить apache и nginx.
Пусть в каталоге /var/www/blog будет первый сайт, а в каталоге /var/www/main - второй.
Создадим каталоги:
# mkdir /var/www/blog
# mkdir /var/www/main
и кинем туда содержимое сайтов.


Настраиваем apache:
# vim /etc/apache2/sites-available/example 
<VirtualHost *:8080>
ServerAdmin [email protected]
DocumentRoot /var/www/blog
ServerName blog.example.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/blog>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:8080>
ServerAdmin [email protected]
DocumentRoot /var/www/main
ServerName example.com
  <Directory />
  Options FollowSymLinks
  AllowOverride None
  </Directory>
  <Directory /var/www/main>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  </Directory>
  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
  </Directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim /etc/apache2/ports.conf 
NameVirtualHost *:8080
Listen *:8080

Настраиваем nginx:
# vim /etc/nginx/sites-available/example 
server { 
   listen 80; 
root /var/www/blog;
   index index.php index.html index.htm; 
   server_name blog.example.com; 
   location / { 
      try_files $uri $uri/ /index.php; 
   } 
   location ~ \.php$ { 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_set_header Host $host; 
      proxy_pass http://127.0.0.1:8080; 
   } 
   location ~ /\.ht { 
      deny all; 
   } 
}

server { 
   listen 80; 
   root /var/www/main;
   index index.php index.html index.htm; 
   server_name example.com; 
   location / { 
      try_files $uri $uri/ /index.php; 
   } 
   location ~ \.php$ { 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_set_header Host $host; 
      proxy_pass http://127.0.0.1:8080; 
   } 
   location ~ /\.ht { 
      deny all; 
   } 
}

# service apache2 restart
# service nginx restart

Таким образом, в каталоге blog у нас лежит блог, например, а в каталоге main - основной сайт.

Комментариев нет: