2016-09-07 3 views
1

Я знаю, что этот предмет задает много раз, но я не нашел ответа, соответствующего моей потребности. Во-первых, я извиняюсь за свой английский.NodeJS у Apache

Я хочу запустить приложение-узел и (или много) другой обычный веб-сайт на VPS. Так что у вас несколько веб-сайтов на тех же VPS, я должен использовать virtualhost от apache? Так вот что я сделал: в /var/www У меня есть 2 справочника: test1 и test2. Я хочу, чтобы test1 был моим узловым приложением, доступным с test1.my_domain, а test2 будет случайным другим сайтом, доступным с test2.my_domain. Чтобы сделать это, я имею конфигурационный апача, как это:

/и т.д./apache2/sites_available/по умолчанию:

<VirtualHost *:80> 
ServerAdmin [email protected]_domain 
ServerName my_domain 
ServerAlias www.my_domain 

DocumentRoot /var/www 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /var/www> 
    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 /var/log/apache2/error.log 

# Possible values include: debug, info, notice, warn, error, crit, 
# alert, emerg. 
LogLevel warn 

CustomLog /var/log/apache2/access.log combined 

Alias /doc/ "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 

</VirtualHost> 

/etc/apache2/sites_available/test1.conf:

<VirtualHost *:80> 
ServerAdmin [email protected]_domain 
ServerName my_domain 
ServerAlias test1.my_domain 

DocumentRoot /var/www/test1 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /var/www/test1> 
    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 /var/log/apache2/error.log 

# Possible values include: debug, info, notice, warn, error, crit, 
# alert, emerg. 
LogLevel warn 

CustomLog /var/log/apache2/access.log combined 

Alias /doc/ "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 

</VirtualHost> 

/etc/apache2/sites_available/test2.conf:

<VirtualHost *:80> 
ServerAdmin [email protected]_domain 
ServerName my_domain 
ServerAlias test2.my_domain 

DocumentRoot /var/www/test2 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /var/www/test2> 
    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 /var/log/apache2/error.log 

# Possible values include: debug, info, notice, warn, error, crit, 
# alert, emerg. 
LogLevel warn 

CustomLog /var/log/apache2/access.log combined 

Alias /doc/ "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 

</VirtualHost> 

Эта работа конфигурация идеально, если test1 не узел приме катион. Я имею в виду, что, когда я иду в test1.my_domain, я получаю содержание /вар/WWW/test1 и если я иду в test2.my_domain, я получаю содержание /вар/WWW/test2 ,

Но если я поставлю заявку на узел в test1, узел ввод в конфликте с апачом, потому что они оба используют порт 80.

Я видел много учебника, чтобы решить, что с помощью Proxys Apache, но я не могу понять как использовать его хорошо. Я точно знаю, что я могу заставить узел прослушивать другой порт, чем 80, но я не хочу этого делать, потому что если я сделаю, то будет test1.my_domain: 7777 (например), и это уродливо?

Кроме того, я являюсь новичком в области конфигурации vps, поэтому, пожалуйста, опишите свой ответ как можно больше;).

Спасибо, ребята!

ответ

0

приложение Run узел на порту 7777, и использовать это как test1.conf:

<VirtualHost *:80> 
ServerAdmin [email protected]_domain 
ServerName test1.my_domain 

ProxyPreserveHost On 
ProxyPass/http://127.0.0.1:7777/ 
ProxyPassReverse/http://127.0.0.1:7777/ 

</VirtualHost> 

При этом приложение узел должен быть доступен с http://test1.my_domain

+0

Ok спасибо за помощь, я постараюсь его позже. Но с этой конфигурацией, как сервер знает, что http: //test1.my_domain находится в/var/www/test1? – toto1911

+0

apache не заботится о том, где находится узел _files_ (или это узловое приложение, сервер tomcat или что-то еще), он просто перенаправляет любой запрос для test1.my_domain в приложение, которое выполняется на порту 7777 –

+0

, это ** очень ** общая настройка, вы не первый с этим требованием :) –

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